【问题标题】:Use Excel sheet to create dictionary in order to replace values使用 Excel 工作表创建字典以替换值
【发布时间】:2019-06-26 12:07:14
【问题描述】:

我有一个带有产品名称的 excel 文件。第一行是类别(A1:水,A2:起泡酒,A3:Still,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

【问题讨论】:

    标签: python python-3.x pandas dataframe


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 1970-01-01
      • 2020-07-11
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      相关资源
      最近更新 更多