我有一个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,水果
..
答案 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