使用Excel工作表创建字典以替换值

时间:2019-06-26 12:07:14

标签: python python-3.x pandas dataframe

我有一个带有产品名称的Excel文件。第一行是类别(A1:水,A2:起泡,A3:仍然,B1:软饮料,B2:可口可乐,B3:橙汁,B4:柠檬水等),下面的每个单元格都是不同的产品。我想将此列表保持在可见的格式(而不用逗号分隔等),因为这对于任何人都非常容易更新产品名称(我有第二个人在不了解脚本的情况下运行脚本)

A1: Water, A2: Sparkling, A3:Still, B1: Soft Drinks, B2: Coca Cola, B3: Orange Juice, B4:Lemonade etc.

如果有帮助,我还可以将excel文件转换为CSV格式,也可以将类别从第一行移至第一列

Alternative format of Excel file

我想用产品类别替换数据框(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

1 个答案:

答案 0 :(得分:0)

DataFrame.meltDataFrame.dropnaDataFrame.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