[英]How to convert groupby object to original pandas DataFrame?
[英]How to convert GroupBy object in pandas to multiindexed dataframe
我有一個看起來像的原始數據框
codcet placa_encoded date time_seconds velocidade
5031 490191222 431.0 2021-03-11 70079.0 51
5032 490221211 431.0 2021-03-11 72219.0 55
7991 490361213 562.0 2021-03-11 28559.0 24
7992 490361232 562.0 2021-03-11 29102.0 29
7993 490361221 562.0 2021-03-11 30183.0 33
...
最左邊的數字是來自原始數據集的索引。 我的目標是將其轉換為由placa_encoded
和n
索引的數據幀,每個組內的計數器看起來像
placa_encoded n time_seconds velocidade codcet
431.0 0 70079.0 51 490191222
431.0 1 72219.0 55 490221211
562.0 0 28559.0 24 490361213
562.0 1 29102.0 29 490361232
562.0 2 30183.0 33 490361221
也就是說,我的目標是groupby('placa_encoded')
然后添加另一列n
來計算每個組中的位置。 該行應由placa_encoded
和n
索引。 我想我可以使用cumcount()
來做到這一點,但我不清楚如何將它添加為列,因為groupby
不會產生我可以分配的數據框。 我查看了這個問題,但似乎他們使用.count()
將其轉換為數據框,我想保留數據而不是獲取任何計數。 我也嘗試使用pd.DataFrame(gbplaca)
和pd.DataFrame(gbplaca.groups)
無濟於事。
太感謝了!
我想這就是你想要的
df['n'] = df.sort_values(['time_seconds'], ascending=True).groupby(['placa_encoded']).cumcount()
df = df.set_index(['placa_encoded', 'n'])
df
這是一個帶有“placa_encoded”和“n”的多索引
您所要做的就是使用df.groupby('placa_encoded').cumcount()
的結果設置df
中的列(名為'n'
):
df.loc[:, 'n'] = df.groupby('placa_encoded').cumcount()
print(df)
codcet placa_encoded date time_seconds velocidade n
0 490191222 431.0 2021-03-11 70079.0 51 0
1 490221211 431.0 2021-03-11 72219.0 55 1
2 490361213 562.0 2021-03-11 28559.0 24 0
3 490361232 562.0 2021-03-11 29102.0 29 1
4 490361221 562.0 2021-03-11 30183.0 33 2
然后,您可以根據需要將df
的多索引設置為['placa_encoded', 'n']
:
df = df.set_index(['placa_encoded', 'index'])
print(df)
codcet date time_seconds velocidade
placa_encoded n
431.0 0 490191222 2021-03-11 70079.0 51
1 490221211 2021-03-11 72219.0 55
562.0 0 490361213 2021-03-11 28559.0 24
1 490361232 2021-03-11 29102.0 29
2 490361221 2021-03-11 30183.0 33
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.