Как получить значения Nan в pandas.groupby - PullRequest
1 голос
/ 25 сентября 2019

Когда я помещаю свои данные в функцию groupby со следующим кодом

x =x.groupby(['Time', 'Distance'],as_index=True,observed=False).size().reset_index()
x.columns=['Time','Distance','Flow']
x.head(3)

, я получаю такой вывод:

  Time    Distance    Flow
0   0       5           1
1   0       7          170
2   0       8           10

Однако мне нужно сделать некоторое сглаживание, поэтому мне нужнопропущенные значения, такие как:

 Time     Distance    Flow
0   0       0           0
1   0       1           0
2   0       2           0
3   0       3           0
4   0       4           0
5   0       5           1

и т. д.Короче говоря, мне нужны также пропущенные значения группировки.Как я могу это сделать?


1 Ответ

2 голосов
/ 25 сентября 2019

Использование:

x = pd.DataFrame({
        'Time':[0,1,1,1,1,0],
         'Distance':[4,5,4,5,5,3],
})

df = x.groupby(['Time', 'Distance'],as_index=True,observed=False).size()
print (df)
Time  Distance
0     3           1
      4           1
1     4           1
      5           3
dtype: int64

df1 = df.unstack(fill_value=0).stack().reset_index(name='Flow')
print (df1)
   Time  Distance  Flow
0     0         3     1
1     0         4     1
2     0         5     0
3     1         3     0
4     1         4     1
5     1         5     3

Или:

m = pd.MultiIndex.from_product(df.index.levels, names=df.index.names)
df1 = df.reindex(m, fill_value=0).reset_index(name='Flow')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...