Python 熊猫:添加缺失月份的数据
我有一个按客户按月列出的销售信息的数据框架,看起来像这样,有多个客户,不同的月份和支出:Python 熊猫:添加缺失月份的数据,python,pandas,Python,Pandas,我有一个按客户按月列出的销售信息的数据框架,看起来像这样,有多个客户,不同的月份和支出: customer_id month_year sales 0 12 2012-05 2.58 1 12 2011-07 33.14 2 12 2011-11 182.06 3 12 2012-03 155.
customer_id month_year sales
0 12 2012-05 2.58
1 12 2011-07 33.14
2 12 2011-11 182.06
3 12 2012-03 155.32
4 12 2012-01 71.24
正如您所看到的,对于每个客户来说,许多月份都不见了。我想为每个客户添加额外的行,销售=0.0,用于月\年范围内的所有月份
有人能建议最好的方法吗?类似的建议;请注意,填充customer_id并没有定义,因为您可能在groupby或其他文件中有此定义 如果需要,您可能需要在末尾重置索引
In [130]: df2 = df.set_index('month_year')
In [131]: df2 = df2.sort_index()
In [132]: df2
Out[132]:
customer_id sales
month_year
2011-07 12 33.14
2011-11 12 182.06
2012-01 12 71.24
2012-03 12 155.32
2012-05 12 2.58
In [133]: df2.reindex(pd.period_range(df2.index[0],df2.index[-1],freq='M'))
Out[133]:
customer_id sales
2011-07 12 33.14
2011-08 NaN NaN
2011-09 NaN NaN
2011-10 NaN NaN
2011-11 12 182.06
2011-12 NaN NaN
2012-01 12 71.24
2012-02 NaN NaN
2012-03 12 155.32
2012-04 NaN NaN
2012-05 12 2.58
In [135]: df2['customer_id'] = 12
In [136]: df2.fillna(0.0)
Out[136]:
customer_id sales
2011-07 12 33.14
2011-08 12 0.00
2011-09 12 0.00
2011-10 12 0.00
2011-11 12 182.06
2011-12 12 0.00
2012-01 12 71.24
2012-02 12 0.00
2012-03 12 155.32
2012-04 12 0.00
2012-05 12 2.58
我找到了一种不同的方法来填补缺失的月份,他们将用NaN来填补,同时还考虑了多个可能的客户
df = df.set_index(['month_year', 'customer_id'])['sales'].unstack().unstack().reset_index()
df = df.rename(columns={0:'sales'})
虽然这是绝对不公平的,但它完成了工作。这个答案假设只有一个客户id=12。如果有多个客户,并且您希望按客户id和月份/年进行排序,情况如何?