[英]Simple Pandas Groupby/Pivot?
我有以下 DataFrame
Value Date
0 1 2022-01-01
1 2 2022-01-01
2 3 2022-01-01
3 4 2022-01-02
4 5 2022-01-02
5 6 2022-01-02
6 7 2022-01-03
7 8 2022-01-03
8 9 2022-01-03
我想通過對與給定日期關聯的所有值進行分組來獲得以下 DataFrame:
Date 2022-01-01 2022-01-02 2022-01-03
0 1 4 7
1 2 5 8
2 3 6 9
我知道這應該是一項非常簡單的任務,但我正在努力弄清楚。 我使用過df.groupby('Date')['Value].apply(list).to_frame.T
,但這沒有用。 解決此問題的任何幫助將不勝感激。
一種選擇是使用pandas.DataFrame.pivot
然后刪除nan
值。
df_new = df.pivot(columns='Date', values='Value').apply(
lambda x: pd.Series(x.dropna().values)).astype('int')
print(df_new)
Output:
Date 2022-01-01 2022-01-02 2022-01-03
0 1 4 7
1 2 5 8
2 3 6 9
另一種可能的解決方案,基於pivot_wider
pyjanitor 的pyjanitor
:
# pip install pyjanitor
import janitor
(df.set_index(df.index % 3)
.pivot_wider(names_from = 'Date', values_from = 'Value')
.rename_axis('Date', axis=1))
Output:
Date 2022-01-01 2022-01-02 2022-01-03
0 1 4 7
1 2 5 8
2 3 6 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.