2017-03-21 9 views
1

私は、さまざまな種類のズボンを含む「ズボン」列を持つデータフレームを持っています。ズボンのほとんどはそのタイプによって始まります。たとえば、Jeans-Replay-blue、Chino-Uniqlo-〜、Smart-Next-〜など)。他のタイプはちょうどタイプを持ちますが、長い名前(2または3の文字列)を持っています ジーンズがセル内にある場合は、値をちょうどジーンに変更するためにその列をループすることですまたはチノセルなど....私は簡単にそれらをグループ化することができます。問題のある値

どのように私のforループでそれを達成することができますか?

+1

生データ、あなたのdfを作成するためのコード、あなたの試行と望ましい出力を投稿してください。基本的にはこれを行うことができますが、さらに明確にする必要があります – EdChum

答えて

1

あなたがstr[0]によってリストの最初の値を選択しsplitを必要としているようだ:

df['type'] = df['Trousers'].str.split('-').str[0] 

サンプル:extract

df = pd.DataFrame({'Trousers':['Jeans- Replay-blue','Chino- Uniqlo-~','Smart-Next-~']}) 
print (df) 
      Trousers 
0 Jeans- Replay-blue 
1  Chino- Uniqlo-~ 
2  Smart-Next-~ 

df['type'] = df['Trousers'].str.split('-').str[0] 
print (df) 
      Trousers type 
0 Jeans- Replay-blue Jeans 
1  Chino- Uniqlo-~ Chino 
2  Smart-Next-~ Smart 

df['Trousers'] = df['Trousers'].str.split('-').str[0] 
print (df) 
    Trousers 
0 Jeans 
1 Chino 
2 Smart 

別の解決策:

df['Trousers'] = df['Trousers'].str.extract('([a-zA-z]+)-', expand=False) 
print (df) 
    Trousers 
0 Jeans 
1 Chino 
2 Smart 
+0

ありがとうございました。しかし、私はちょっと、すべてのズボンが 'タイプ' + ' - 'で始まらないので、同じ問題にぶち当たっています。私は2または3分類列を持っていないようにループが素晴らしいだろう。 – Shyryu

+0

問題のある値で質問を編集できますか?ありがとう。 – jezrael

+0

私はあなたが値のリストを得ることができます、このソリューションは使用できないと思いますか?申し訳ありませんが、私の説明は明らかではないかもしれません。 – jezrael