簡體   English   中英

轉置列時按唯一值分組

[英]Grouping by unique values while transposing column

前幾天,我用來自兩列的數據問了一個類似的問題:

在Python中按唯一值對列進行分組

現在我有三列。 它們需要按A列分組,其中B列作為標題值,C列正確排序。

我的數據框如下所示:

    A   B   C
25115  20  45
25115  30  154
25115  40  87
25115  70  21
25115  90  74
26200  10  48
26200  20  414
26200  40  21
26200  50  288
26200  80  174
26200  90  54

但是我需要結束這個:

       10   20   30   40   50   70   80   90
25115       45   154  87        21        74
26200  48   414       21   288       174  54

這將獲取列C的值,但不使用列B作為行名。

import pandas as pd
df = pd.DataFrame({'A':[25115,25115,25115,25115,25115,26200,26200,26200,26200,26200,26200],'B':[20,30,40,70,90,10,20,40,50,80,90],'C':[45,154,87,21,74,48,414,21,288,174,54]})
a = df.groupby('A')['C'].apply(lambda x:' '.join(x.astype(str)))

任何想法將不勝感激。

  • 選項1:

使用數據透視表:

df.pivot_table(values='C',index='A',columns='B')

產量

B        10     20     30    40     50    70     80    90
A                                                        
25115   NaN   45.0  154.0  87.0    NaN  21.0    NaN  74.0
26200  48.0  414.0    NaN  21.0  288.0   NaN  174.0  54.0
  • 選項2:

使用set_index / unstack:

df.set_index(['A','B'])['C'].unstack()

輸出:

B        10     20     30    40     50    70     80    90
A                                                        
25115   NaN   45.0  154.0  87.0    NaN  21.0    NaN  74.0
26200  48.0  414.0    NaN  21.0  288.0   NaN  174.0  54.0

暫無
暫無

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

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