gpt4 book ai didi

python - pandas - 我如何从同一列上的数据框获得差异

转载 作者:太空宇宙 更新时间:2023-11-04 04:17:02 25 4
gpt4 key购买 nike

除了“值”列之外,我有 2 个相同的数据框,需要根据年+名称+月份列获取“值”列上的 2 个数据框的差异,并将其附加到数据集。

x1 = {
"year": ["2018", "2018", "2018", "2018", "2018", "2018"],
"name": ["abc", "xyz", "pqr", "stu", "hij", "efg"],
"month": ["Jan-18", "Feb-18", "Mar-18", "Apr-18", "May-18", "Jun-18"],
"value": [100, 200, 300, 400, 500, 600],
}
x2 = {
"year": ["2019", "2019", "2019", "2019", "2019", "2019"],
"name": ["abc", "xyz", "pqr", "stu", "hij", "efg"],
"month": ["Jan-18", "Feb-18", "Mar-18", "Apr-18", "May-18", "Jun-18"],
"value": [700, 300, 200, 500, 600, 100],
}
y1 = pd.DataFrame(x1).append(pd.DataFrame(x2), ignore_index=True)

print(y1)

结果应该像第 12 和 13 行

    year name   month  value
0 2018 abc Jan-18 100
1 2018 xyz Feb-18 200
...
...
6 2019 abc Jan-18 700
7 2019 xyz Feb-18 300
...
...
12 diff abc Jan-18 (700-100)
13 diff xyz Feb-18 (300-200)

最佳答案

sort_values 之后检查 groupbydiff

y2=y1.copy()
y2=y2.sort_values('year')
y2['value']=y2.groupby(['name','month']).value.diff()
y1=y1.append(y2.dropna().assign(year='diff'))
y1
year name month value
0 2018 abc Jan-18 100.0
1 2018 xyz Feb-18 200.0
2 2018 pqr Mar-18 300.0
3 2018 stu Apr-18 400.0
4 2018 hij May-18 500.0
5 2018 efg Jun-18 600.0
6 2019 abc Jan-18 700.0
7 2019 xyz Feb-18 300.0
8 2019 pqr Mar-18 200.0
9 2019 stu Apr-18 500.0
10 2019 hij May-18 600.0
11 2019 efg Jun-18 100.0
6 diff abc Jan-18 600.0
7 diff xyz Feb-18 100.0
8 diff pqr Mar-18 -100.0
9 diff stu Apr-18 100.0
10 diff hij May-18 100.0
11 diff efg Jun-18 -500.0

关于python - pandas - 我如何从同一列上的数据框获得差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55213321/

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