gpt4 book ai didi

python - 如何查找给定数据框的多列之间的差异并将结果保存为单独的数据框

转载 作者:行者123 更新时间:2023-12-01 00:43:53 25 4
gpt4 key购买 nike

我的数据框如下,

df = pd.DataFrame({'A':[1,4,7,1,4,7],'B':[2,5,8,2,5,8],'C':[3,6,9,3,6,9],'D':[1,2,3,1,2,3]})
A B C D
0 1 2 3 1
1 4 5 6 2
2 7 8 9 3
3 1 2 3 1
4 4 5 6 2
5 7 8 9 3

如何在数据框中找到列(A 和 B)之间的差异并另存为 AB,并对(C 和 D)执行相同操作并另存为 CD。

预期输出:

    AB   CD
0 1.0 -2.0
1 1.0 -4.0
2 1.0 -6.0
3 1.0 -2.0
4 1.0 -4.0
5 1.0 -6.0

尝试使用

d = dict(A='AB', B='AB', C='CD', D='CD')
df.groupby(d, axis=1).diff()

如所解释的here ,这对于 sum() 效果很好,但对于 diff() 则无法按预期工作。有人可以解释一下为什么吗?

最佳答案

区别在于 diff 不是像 sum 这样的聚合值,而是返回新的 2 列 - 第一个由 NAN 填充,第二个由值填充。

因此,这里可能的解决方案是仅删除 NaNDataFrame.dropna :

d = dict(A='AB', B='AB', C='CD', D='CD')
df1 = df.rename(columns=d).groupby(level=0, axis=1).diff().dropna(axis=1, how='all')
print (df1)
AB CD
0 1.0 -2.0
1 1.0 -4.0
2 1.0 -6.0
3 1.0 -2.0
4 1.0 -4.0
5 1.0 -6.0

关于python - 如何查找给定数据框的多列之间的差异并将结果保存为单独的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57144087/

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