簡體   English   中英

簡單 Pandas Groupby/Pivot?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM