我有以下数据框,从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,但它用1s填充了Apple / Pear列。我尝试了一个for循环,如果下一个日期索引与当前日期索引相同,那么对于相应的Apple / Pear列,它将+ = 1。这失败了,因为列的类型,以及我尝试更改列类型也失败了。对着这一个敲我的头,我无法得到它。
我能做的一件事就是用df = df.reset_index().drop_duplicates('Date',keep='last').set_index('Date')
答案 0 :(得分:2)
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
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
答案 1 :(得分:0)