Я думаю, вам нужно добавить некоторую статистическую функцию, например, sum
first:
print (probes)
city date value
0 Munich 2018-06-01 4
1 Munich 2018-08-01 1
2 Munich 2018-08-03 5
3 Munich 2018-09-01 1
4 New York 2018-06-01 1
5 New York 2018-07-01 2
probes['date'] = pd.to_datetime(probes['date'])
s = probes.groupby(['city',pd.Grouper(key='date', freq='M')])['value'].sum()
print (s)
city date
Munich 2018-06-30 4
2018-08-31 6
2018-09-30 1
New York 2018-06-30 1
2018-07-31 2
Name: value, dtype: int64
А затем используйте groupby
на city
с asfreq
, reset_index
, необходимые для DatetimeIndex
:
df1 = (s.reset_index(level=0)
.groupby('city')['value']
.apply(lambda x: x.asfreq('M'))
.reset_index())
print (df1)
city date value
0 Munich 2018-06-30 4.0
1 Munich 2018-07-31 NaN
2 Munich 2018-08-31 6.0
3 Munich 2018-09-30 1.0
4 New York 2018-06-30 1.0
5 New York 2018-07-31 2.0
Также возможно использование MS
для начала месяца:
probes['date'] = pd.to_datetime(probes['date'])
s = probes.groupby(['city',pd.Grouper(key='date', freq='MS')])['value'].sum()
df1 = (s.reset_index(level=0)
.groupby('city')['value']
.apply(lambda x: x.asfreq('MS'))
.reset_index()
)
print (df1)
city date value
0 Munich 2018-06-01 4.0
1 Munich 2018-07-01 NaN
2 Munich 2018-08-01 6.0
3 Munich 2018-09-01 1.0
4 New York 2018-06-01 1.0
5 New York 2018-07-01 2.0