簡體   English   中英

按列值分組並將其設置為Pandas中的索引

[英]Group by column value and set it as index in Pandas

我有一個看起來像這樣的數據df1

df1 = pd.DataFrame({'A':[0,5,4,8,9,0,7,6],
                   'B':['a','s','d','f','g','h','j','k'],
                   'C':['XX','XX','XX','YY','YY','WW','ZZ','ZZ']})    

我的目標是根據列C包含的值對元素進行分組,以使具有相同值的行具有相同的索引(索引必須包含存儲在C的值)。 因此,輸出應如下所示:

    A  B   
XX  0  a  
    5  s  
    4  d  
YY  8  f  
    9  g  
WW  0  h  
ZZ  7  j  
    6  k  

我嘗試使用命令df.groupby('C')但它返回以下對象:

<pandas.core.groupby.DataFrameGroupBy object at 0x000000001A9D4860>

您能建議我一種優雅而聰明的方法來實現自己的目標嗎?

注意:我認為我的問題與多重索引有關

看來您需要DataFrame.set_index

df2 = df1.set_index('C')
print (df2)
    A  B
C       
XX  0  a
XX  5  s
XX  4  d
YY  8  f
YY  9  g
WW  0  h
ZZ  7  j
ZZ  6  k

print (df2.loc['XX'])
    A  B
C       
XX  0  a
XX  5  s
XX  4  d

如果需要CA列的MultiIndex

df3 = df1.set_index(['C', 'A'])
print (df3)
      B
C  A   
XX 0  a
   5  s
   4  d
YY 8  f
   9  g
WW 0  h
ZZ 7  j
   6  k

print (df3.loc['XX'])
   B
A   
0  a
5  s
4  d

我想你正在尋找pivot_table

pd.pivot_table(df1, values='A', index=['C','B'])

輸出:

A
C  B   
WW h  0
XX a  0
   d  4
   s  5
YY f  8
   g  9
ZZ j  7
   k  6

暫無
暫無

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

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