gpt4 book ai didi

python - 比较两个或三个数据帧中的列值并合并

转载 作者:行者123 更新时间:2023-12-01 07:01:35 29 4
gpt4 key购买 nike

我已经检查了一些之前的问题,并且有一些独特的问题。我有三个 Excel 文件,我将它们加载到三个不同的数据框中。基本上我必须添加 excel_1 和 excel_2 的内容并将内容与 excel_3 进行比较

示例数据:(excel_1 sales Territory#1)

  Name  Year    Item    sales_Amount1
A1 1.2019 Badam 2
A1 1.2019 Badam 10
A1 1.2019 carrot 8
A1 1.2019 carrot 10
A2 1.2019 Badam 10
A2 1.2019 Badam 20
A3 2.2019 soap 3
A1 2.2019 soap 1

示例数据:(excel_2 sales Territory#2)

  Name  Year    Item    sales_Amount2
A1 1.2019 Badam 60
A1 1.2019 Badam 10
A2 1.2019 Badam 40
A2 1.2019 Badam 1
A3 2.2019 soap 1
A3 2.2019 soap 10
A1 2.2019 soap 10

excel_3目标也有类似的数据

  Name  Year    Item    target_Amount
A1 1.2019 Badam 100
A2 1.2019 Badam 30
A1 1.2019 carrot 200
A3 2.2019 soap 3

基本上,我必须添加销售额 1 和 2,并将结果与​​目标数据进行比较。我想要一个包含列详细信息如下的 csv。因此我可以像我提到的那样进行计算。

  Name   Year    Item   sales_Amount1  Sales_Amount2  target_Amount
A1 1.2019 Badam 12 70 100
A1 1.2019 carrot 18 0 200
A2 1.2019 Badam 30 41 30
A1 2.2019 soap 1 10 0
A3 2.1019 soap 3 11 3
df1 = pd.read_excel(r"excel_1.xlxs")
sum_sales1 = df1.groupby(['Name','Year', 'Item']).agg({'sales_Amount1': 'sum'})

df2 = pd.read_excel(r"excel_2.xlxs")
sum_sales1 = df2.groupby(['Name','Year', 'Item']).agg({'sales_Amount2': 'sum'})

df3 = pd.read_excel(r"excel_3.xlxs")
sum_sales1 = df3.groupby(['Name','Year', 'Item']).agg({'target_Amount': 'sum'})

基本上,我将每个 csv 加载到一个数据框中,然后进行 groupby 以获得每个项目的聚合总和,如上所示。现在将如上所示的所有三个数据帧与以下列进行比较和合并有点棘手

Name   Year    Item   sales_Amount1  Sales_Amount2  target_Amount

这种方法是否适合比较三个数据帧并将它们合并为一个数据帧,或者我应该转向数据透视表。在我继续之前,选择哪一个有点令人困惑。谢谢。

最佳答案

使用concatDataFrame.fillna :

sum_sales1 = df1.groupby(['Name','Year', 'Item']).agg({'sales_Amount1': 'sum'})
sum_sales2 = df2.groupby(['Name','Year', 'Item']).agg({'sales_Amount2': 'sum'})
sum_sales3 = df3.groupby(['Name','Year', 'Item']).agg({'target_Amount': 'sum'})

df = (pd.concat([sum_sales1, sum_sales2, sum_sales3],
axis=1).fillna(0).astype(int).reset_index())
print (df)
Name Year Item sales_Amount1 sales_Amount2 target_Amount
0 A1 1.2019 Badam 12 70 100
1 A1 1.2019 carrot 18 0 200
2 A1 2.2019 soap 1 10 0
3 A2 1.2019 Badam 30 41 30
4 A3 2.2019 soap 3 11 3

如果最后一列需要聚合 - 则使用列表理解:

dfs = [df1, df2, df3]
dfs = [x.groupby(['Name','Year', 'Item']).agg({x.columns[-1]: 'sum'}) for x in dfs]

df = pd.concat(dfs, axis=1).fillna(0).astype(int).reset_index()
print (df)
Name Year Item sales_Amount1 sales_Amount2 target_Amount
0 A1 1.2019 Badam 12 70 100
1 A1 1.2019 carrot 18 0 200
2 A1 2.2019 soap 1 10 0
3 A2 1.2019 Badam 30 41 30
4 A3 2.2019 soap 3 11 3

关于python - 比较两个或三个数据帧中的列值并合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603076/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com