簡體   English   中英

將Pandas groupby group轉換為列

[英]Convert Pandas groupby group into columns

我正在嘗試通過兩個獨立的組類型A_Bucket和B_Bucket對Pandas數據幀進行分組,並將每個A_Bucket組轉換為一列。 我得到這樣的團體:

grouped = my_new_df.groupby(['A_Bucket','B_Bucket'])

我希望A_Bucket組在列中,B_Bucket組作為索引。 'A'有大約20個值,B有大約20個值,所以總共有大約400個組。

當我打印分組及其類型時,我得到:

type of grouped2 = <class 'pandas.core.groupby.DataFrameGroupBy'>
A_Bucket  B_Bucket
0.100      100.0            5.418450
           120.0           18.061367
0.125      80.0             3.100920
           100.0           14.137063
           120.0           30.744823
           140.0           38.669950
           160.0           48.303129
           180.0           74.576333
           200.0          125.119950
0.150      60.0             0.003200
           80.0             2.274807
           100.0            5.350074
           120.0           23.272970
           140.0           40.131780
           160.0           47.036912
           180.0           72.438978
           200.0          117.365480

所以A_Bucket組0.100只有2個值,但0.125有7.我想要一個這樣的數據幀:

        0.1     0.125      0.15
80      NaN     3.10092    2.274807
100     5.41845 14.137063  5.350074
120     18.0613 30.744823  23.27297
140     NaN     38.66995   40.13178
160     NaN     48.303129  47.036912
180     NaN     74.576333  72.438978
200     NaN     125.11995  NaN

我看到了這個問題: Pandas groupby導致多列

但我不理解語法,並沒有像我需要的那樣將第一組安排到列中。 我還希望這適用於多個輸出列。

我該怎么做呢?

如果我理解正確,您正在嘗試重塑數據框而不是按摘要分組,在這種情況下,您可以使用set_index()set_index() unstack()

df.set_index(["A_Bucket", "B_Bucket"]).unstack(level=0)

#              Value
# A_Bucket     0.100     0.125       0.150
# B_Bucket          
#     60.0       NaN       NaN    0.003200
#     80.0       NaN  3.100920    2.274807
#    100.0  5.418450 14.137063    5.350074
#    120.0 18.061367 30.744823   23.272970
#    140.0       NaN 38.669950   40.131780
#    160.0       NaN 48.303129   47.036912
#    180.0       NaN 74.576333   72.438978
#    200.0       NaN 125.119950 117.365480

如果你確實在分組后完成了摘要,你仍然可以做df.groupby(['A_Bucket', 'B_Bucket']).mean().unstack(level=0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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