在熊猫中拆分和复制CSV字段

时间:2019-02-17 22:08:46

标签: python pandas csv data-analysis

我有一个CSV文件,例如

ID,名称,产品

101,Tesco,Apple; Banana; Oranges

102,Lidl,Juice; Yogurt

103,Aldi,水果;蔬菜;大米

使用pandas库,我想将它们拆分为一个新的csv,以便在product列中,每个字段只有一个值

我尝试过的以下代码仅选择那些特定的列,并将值写入新的csv。我想修改输出。

df=pd.read_csv('final.csv',delimiter=",", index_col="ID",encoding="ISO- 
8859-1")
df1=df[,"Name","Products"]
df1.to_csv('a.csv',header='True')
print (df1)

我希望生成的新csv具有以下格式的值-

101,Tesco,Apple

101,Tesco,香蕉

101,Tesco,橙色

102,Lidl,果汁

102,Lidl,酸奶

103,Aldi,水果

..

1 个答案:

答案 0 :(得分:2)

我们可以:

1)用定界符“;”分隔每行中的项目。然后我们为每个项目获得一列。

2)然后,我们对列进行堆叠以使其成为行,然后删除根据先前的列值添加的索引级别。

3)将此pd.Series命名并加入主df。

prod = df['products'].str.split(";", expand=True).unstack().reset_index(level=0, drop=True).dropna()

    ID
    101         Apple
    102         Juice
    103        Fruits
    101        Banana
    102        Yogurt
    103    vegetables
    101       Oranges
    103          rice

prod.name = 'product'

df = df.join(prod.to_frame())
df.drop('products', axis=1, inplace=True)

Output:

      Name     product
ID                    
101  Tesco       Apple
101  Tesco      Banana
101  Tesco     Oranges
102   Lidl       Juice
102   Lidl      Yogurt
103   Aldi      Fruits
103   Aldi  vegetables
103   Aldi        rice