有问题的价值观

时间:2017-03-21 11:09:42

标签: python pandas

我有一个数据框,其中有一个'Trousers'列,其中包含许多不同类型的裤子。大多数裤子都是从他们的类型开始的。例如:Jeans- Replay-blue,或Chino-Uniqlo-~,或者Smart-Next-~)。其他人只有一个类型,但只有一个长名称(2或3个字符串) 我想要的是循环遍历该列,将值更改为Jean 如果牛仔裤在单元格中,或者 Chinos如果Chino在单元格中等等。 ..所以我可以轻松地将它们分组。

如何通过我的for循环实现这一目标?

1 个答案:

答案 0 :(得分:1)

您似乎需要split,然后按str[0]选择列表的第一个值:

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

样品:

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

extract的另一个解决方案:

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