我从df开始,只有两个月的数据。
我需要对这几个月进行汇总,以得出总的借方和贷方。
action shares debit credit
date
2016-05-27 + 13883.000 13883.000 0
2016-05-27 - 166600.000 0 166600.000
2012-08-30 + 1428.000 1428.000 0
2012-08-30 - 10000.000 0 10000.000
2012-08-27 + 55085.000 55085.000 0
2012-08-27 - 385600.000 0 385600.000
所以我以为我会按月进行分组
g = df.groupby ( pd.Grouper ( freq = 'M' ) ).sum ()[["debit", "credit"]]
但这给了我所有的空余时间,而不仅仅是两个月。
debit credit
date
2012-08-31 56513.000 395600.000
2012-09-30 0 0
2012-10-31 0 0
2012-11-30 0 0
....
2016-04-30 0 0
2016-05-31 13883.000 166600.000
如何删除所有空行,或者是否有更好的方法将两个月的数据相加?
谢谢。
答案 0 :(得分:1)
我认为0: 0.840188
1: 0.700976
2: 0.561380
3: 0.916458
4: 0.274746
5: 0.135439
6: 0.486904
7: 0.352761
8: 0.206965
9: 0.565811
10: 0.926345
11: 0.785600
12: 0.632643
13: 0.999498
14: 0.354973
15: 0.215437
可能是最简单的答案,但是要具体回答您的要求,我会将日期截断为月份值。
我假设它们是字符串。如果它们是g = g[(g.debit != 0) & (g.credit != 0)]
对象,则逻辑相似。您只需要在datetime
部分中放置一个1
。
day
然后只是使用def trunc_to_month(x):
y = x.split('-')
return '-'.join(y[0], y[1], '1')
df['date_month'] = df.date.apply(trunc_to_month)
而不是date_month
进行相同的分组方式。