gpt4 book ai didi

python - 按索引对 Pandas 数据框中两列中的重复行求和

转载 作者:行者123 更新时间:2023-12-01 03:11:31 25 4
gpt4 key购买 nike

我有以下数据框,从 csv 读入 pandas。

           Fruit    Apple   Pear
Date
2016-03-30 Pear 1
2016-04-14 Pear 1
2016-04-14 Pear 1
2016-05-09 Apple 1
2016-05-18 Apple 1
2016-06-24 Pear 1
2016-06-27 Apple 1
2016-06-27 Pear 1
2016-06-28 Apple 1
2016-06-28 Apple 1
2016-07-05 Pear 1

我希望它看起来像这样。它对重复行求和,然后删除重复行。此时,Fruit 列中的值并不重要。稍后我会删除该专栏。

           Fruit    Apple   Pear
Date
2016-03-30 Pear 1
2016-04-14 Pear 2
2016-05-09 Apple 1
2016-05-18 Apple 1
2016-06-24 Pear 1
2016-06-27 Apple 1 1
2016-06-28 Apple 2
2016-06-28 Apple 1
2016-07-05 Pear 1

我尝试使用 groupby,但它用 1 填充了 Apple/Pear 列。我尝试了一个 for 循环,如果下一个日期索引与当前日期索引相同,则相应的 Apple/Pear 列将 += 1。失败是因为列的类型以及我更改列类型的尝试也失败了。我用头撞这个,但我无法得到它。

我能做的一件事就是用 df = df.reset_index().drop_duplicates('Date',keep='last').set_index('Date') 删除重复项

最佳答案

IIUC你需要groupby按索引 - level=0 和聚合 sum:

df = df.groupby(level=0).sum()
print (df)
Apple Pear
Date
2016-03-30 NaN 1.0
2016-04-14 NaN 2.0
2016-05-09 1.0 NaN
2016-05-18 1.0 NaN
2016-06-24 NaN 1.0
2016-06-27 1.0 1.0
2016-06-28 2.0 NaN
2016-07-05 NaN 1.0

如果需要cumsum如前所述Noobie ,谢谢:

df = df.groupby(level=0).cumsum() 
print (df)
Apple Pear
Date
2016-03-30 NaN 1.0
2016-04-14 NaN 1.0
2016-04-14 NaN 2.0
2016-05-09 1.0 NaN
2016-05-18 1.0 NaN
2016-06-24 NaN 1.0
2016-06-27 1.0 NaN
2016-06-27 NaN 1.0
2016-06-28 1.0 NaN
2016-06-28 2.0 NaN
2016-07-05 NaN 1.0

关于python - 按索引对 Pandas 数据框中两列中的重复行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860963/

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