我有以下数据。我需要填写剩余月份的数据
我只需要填写每月的第一天[第一天]。没有数据的地方,我都需要用'0'填充值。
例如下面是现有数据
uname month_first msg_count
0 ArtCort0324 2017-06-01 9
我需要以下面的方式输出。
答案 0 :(得分:2)
通过unman和日期范围的组合创建多索引并重新索引数据
df.month_first = pd.to_datetime(df.month_first)
dates = pd.date_range(datetime.datetime(df.month_first.dt.year.min(), 1, 1),datetime.datetime(df.month_first.dt.year.max(), 12, 1), freq = 'MS')
idx = pd.MultiIndex.from_product([df.uname.unique(), dates], names = ['uname','month_first'])
df.set_index(['uname', 'month_first']).reindex(idx).fillna(0).astype(int).reset_index()
uname month_first msg_count
0 ArtCort0324 2017-01-01 0
1 ArtCort0324 2017-02-01 0
2 ArtCort0324 2017-03-01 0
3 ArtCort0324 2017-04-01 0
4 ArtCort0324 2017-05-01 0
5 ArtCort0324 2017-06-01 9
6 ArtCort0324 2017-07-01 0
7 ArtCort0324 2017-08-01 0
8 ArtCort0324 2017-09-01 0
9 ArtCort0324 2017-10-01 0
10 ArtCort0324 2017-11-01 0
11 ArtCort0324 2017-12-01 0