熊猫Grouby月在日期之间添加空行

时间:2019-04-19 02:39:53

标签: pandas

我从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

如何删除所有空行,或者是否有更好的方法将两个月的数据相加?

谢谢。

1 个答案:

答案 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进行相同的分组方式。