我有以下熊貓資料框:
import pandas as pd
df4 = pd.DataFrame({'timestamp':['2022-10-01 01:00:00',
'2022-10-02 01:00:00',
'2022-10-03 01:00:00',
'2022-10-04 01:00:00',
'2022-10-05 01:00:00',
'2022-10-01 02:00:00',
'2022-10-02 02:00:00',
'2022-10-03 02:00:00',
'2022-10-04 02:00:00',
'2022-10-05 02:00:00'],
'A': [1,2,3,4,5,6,7,8,9,10],
'B': [10,9,8,7,6,5,4,3,2,1]}
)
df4['timestamp'] = df4['timestamp'].astype('datetime64')
df4
這給出了以下資料框:
| timestamp | A| B |
|--------------------|--| --|
| 2022-10-01 01:00:00| 1| 10|
| 2022-10-02 01:00:00| 2| 9 |
| 2022-10-01 01:00:00| 3| 8 |
| 2022-10-02 01:00:00| 4| 7 |
| 2022-10-01 01:00:00| 5| 6 |
| 2022-10-02 01:00:00| 6| 5 |
| 2022-10-01 01:00:00| 7| 4 |
| 2022-10-02 01:00:00| 8| 3 |
| 2022-10-01 01:00:00| 9| 2 |
| 2022-10-02 01:00:00| 10| 1|
我正在嘗試在時間戳的日級別上獲取一個組,跨 y 列,并且沒有聚合函式,但是將所有資料收集在一個新列中(作為 pandas 系列或 NumPy 陣列):
| timestamp | no_name | y |
|------------| -----------------| -----|
| 2022-10-01 | 0 [1,3,5,7,9] | A |
| 2022-10-01 | 0 [10,8, 6, 4, 2]| B |
| 2022-10-02 | 0 [2,4, 6, 8, 10]| A |
| 2022-10-02 | 0 [9,7, 5, 3, 1] | B |
我嘗試按照鏈接輸出 pandas grouped data frame without aggregation的建議進行操作:
但
df6 = df4.groupby('timestamp').agg( lambda g: dict([(k, g[k].tolist()) for k in g]))
給出 KeyError: 1
另外,我嘗試了以下方法:
df4.melt(id_vars=['timestamp'], var_name='target', value_name='value')
為了在一列中獲取目標值,跨時間戳(按小時級別)進行分組并且沒有聚合并沒有給出預期的結果。
有什么建議么?我還能嘗試解決什么問題?
謝謝
uj5u.com熱心網友回復:
將此添加到您的代碼中:
df4['day'] = df4['timestamp'].dt.strftime('%Y-%m-%d')
grouped = df4.groupby('day')[['A', 'B']].agg(list)
result = grouped.melt(ignore_index=False)
print(result)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/521392.html
上一篇:熊貓:按條件分配日期時間
