我有一个带有产品名称的Excel文件。第一行是类别(A1:水,A2:起泡,A3:仍然,B1:软饮料,B2:可口可乐,B3:橙汁,B4:柠檬水等),下面的每个单元格都是不同的产品。我想将此列表保持在可见的格式(而不用逗号分隔等),因为这对于任何人都非常容易更新产品名称(我有第二个人在不了解脚本的情况下运行脚本)
如果有帮助,我还可以将excel文件转换为CSV格式,也可以将类别从第一行移至第一列
我想用产品类别替换数据框(df)的单元格。例如,可口可乐将成为软饮料。如果该产品不在excel中,则不会被替换(例如Cookie)。
print(df)
Product Quantity
0 Coca Cola 1234
1 Cookie 4
2 Still 333
3 Chips 88
预期结果:
print (df1)
Product Quantity
0 Soft Drinks 1234
1 Cookie 4
2 Water 333
3 Snacks 88
答案 0 :(得分:0)
将DataFrame.melt
与DataFrame.dropna
或DataFrame.stack
用作助手Series
,然后使用Series.replace
:
s = df1.melt().dropna().set_index('value')['variable']
替代:
s = df1.stack().reset_index(name='v').set_index('v')['level_1']
df['Product'] = df['Product'].replace(s)
#if performance is important
#df['Product'] = df['Product'].map(s).fillna(df['Product'])
print (df)
Product Quantity
0 Soft Drinks 1234
1 Cookie 4
2 Water 333
3 Snacks 88