python - 使用 Excel 工作表中的数据替换数据框中的值

标签 python excel python-3.x pandas dataframe

我有一个带有产品名称的简单 excel 文件。第一行是类别(A1:水,A2:起泡酒,A3:Still,B1:软饮料,B2:可口可乐,B3:橙汁,B4:柠檬水等),下面的每个单元格都是不同的产品。我想用产品类别替换另一个数据框(df1)的单元格。例如,可口可乐将成为软饮料。如果产品不在 Excel 中,则不会被替换(例如 Cookie)。

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

打印(df1)

         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

最佳答案

我们从 Excel 数据框创建一个查找字典,并使用它用类别替换产品名称(字典中未找到的产品按要求保留未替换):

df = pd.read_excel(r'c:\temp\product_names.xlsx')
df1 = pd.DataFrame({'Product': ['Coca Cola','Cookie','Still','Chips'], 'Quantity': [1234,4,333,88]})

lu = df.unstack().dropna().reset_index()
df1.Product.replace(dict(zip(lu.iloc[:,2],lu.iloc[:,0])),inplace=True)

结果:
       Product  Quantity
0  Soft Drinks      1234
1       Cookie         4
2        Water       333
3       Snacks        88

PS:这是要粘贴到 A1 处的 Excel 工作表中以重现示例的 csv 文件:
Water,Soft Drinks,Sandwich,Snacks
Sparkling,Coca Cola,Ham and cheese,Chips
Still,Orange Juice,Vegetarian,
,Lemonade,Club,
,,Spinach, 

关于python - 使用 Excel 工作表中的数据替换数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752873/

相关文章:

vba - 使用 VBA Excel 选择开始日期 - 结束日期

python - 根据列值对行进行条件样式设置

python-3.x - 除了使用 def 之外,还有更好的方法来重复代码吗

Python - 使用正则表达式获取用户数据

excel - AND 在嵌入数组公式中的 IF 语句中不起作用

python - 自定义错误消息在 Django ModelForm 中不起作用

php - HTML 列表到 CSV

python - 用于迭代 2 个列表的简单 for 循环

python - 是否有 python 代码来解析 geoPDF 文件以获取投影和图像数据? geoPDF2KML 工具?

python - 如何更新 python 中的全局变量?