python: Pandas - добавляет недостающие даты в датафрейм - PullRequest
0 голосов
/ 30 января 2019

У меня есть данные ниже.Мне нужно заполнить данные за оставшиеся месяцы

enter image description here

Мне нужно заполнить только первый день [день первый] месяца.Везде, где нет данных, мне нужно, чтобы значение было заполнено '0'.

Например, ниже приведены существующие данные

       uname        month_first     msg_count
0     ArtCort0324   2017-06-01      9

Мне нужен вывод ниже.

enter image description here

1 Ответ

0 голосов
/ 30 января 2019

Создать мультииндекс из комбинации диапазона 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...