[英]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
如果需要C
和A
列的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.