如何使用python/pandas根据一列中的字符串拆分和复制行?
我有一个df,其中一些值被添加到同一行,如以下伪df:如何使用python/pandas根据一列中的字符串拆分和复制行?,python,string,pandas,Python,String,Pandas,我有一个df,其中一些值被添加到同一行,如以下伪df: [['Apple, Kiwi, Clementine', np.nan , 'Cycling', 5], ['Kiwi', 'Blue', np.nan , 20], ['Banana, Clementine', np.nan , 'Hockey', 12], ['Apple', 'Purple', 'Triathlon', 15], ['Kiwi', np.nan, 'Swim
[['Apple, Kiwi, Clementine', np.nan , 'Cycling', 5],
['Kiwi', 'Blue', np.nan , 20],
['Banana, Clementine', np.nan , 'Hockey', 12],
['Apple', 'Purple', 'Triathlon', 15],
['Kiwi', np.nan, 'Swimming', 8]]),
columns=['fruit', 'colour', 'sport', 'wins'])
我想要的是复制包含多个水果的行,同时将第一个条目拆分为只包含一个水果。
最后,我想画出每种水果的平均收益。因此,如果有一种分组方法,其中提到的每种水果都与正确的水果分组,可以说,这也会起作用
我尝试了一些字符串操作,但它只是简单地被拆分,其他列中的值不会重复。
这很令人沮丧,因为我知道如何在r中完成,但我是python的初学者。使用@Wen Ben的解决方案,来自:
注意如果您愿意,您可以选择删除
水果
列。太好了!现在清理不同的拼写等就容易多了。@Mactilda干杯..!!:)
s=pd.DataFrame([[x] + [z] for x, y in zip(df.index,df.fruit.str.split(',')) for z in y],
columns=[0,'Fruit'])
df_new=s.merge(df,left_on=0,right_index=True).drop(0,1)
print(df_new)
Fruit fruit colour sport wins
0 Apple Apple, Kiwi, Clementine NaN Cycling 5
1 Kiwi Apple, Kiwi, Clementine NaN Cycling 5
2 Clementine Apple, Kiwi, Clementine NaN Cycling 5
3 Kiwi Kiwi Blue NaN 20
4 Banana Banana, Clementine NaN Hockey 12
5 Clementine Banana, Clementine NaN Hockey 12
6 Apple Apple Purple Triathlon 15
7 Kiwi Kiwi NaN Swimming 8