簡體   English   中英

如何在Pandas中重塑或旋轉DataFrame

[英]How do I reshape or pivot a DataFrame in Pandas

我想在Pandas中重塑一個DataFrame,但不確定如何去做。 這是我的開始:

Phase Weight Value  CF
AA   heavy    0.28  1.0
AB   light    3.26  1.0
BX   med      0.77  1.0
XY   x light -0.01  1.0
AA   heavy    0.49  1.5
AB   light    5.10  1.5
BX   med      2.16  1.5
XY   x light  0.98  1.5
AA   heavy    2.48  2.0
AB   light   11.70  2.0
BX   med      5.81  2.0
XY   x light  3.46  2.0

我想重塑一下:

Phase       Weight  1.0     1.5     2.0
AA          heavy   0.28    0.49    2.48
AB          light   3.26    5.10    11.70
BX          med     0.77    2.16    5.81
XY        x light  -0.01    0.98    3.46

因此,列名現在是CF中的值,新表中行與列的交集是原始表中的value列中的值。

我知道我可以使用“相位”列作為索引,例如:

df.pivot(index='Phase', columns='CF', values='Value)

但是然后我錯過了重量專欄。我嘗試了這個但是我遇到了一個錯誤

df.pivot(index='Phase', columns=['Weight','CF'], values='Value')

有沒有辦法用一個語句來做到這一點? 如果沒有,最好的方法是什么?

您可以使用pd.pivot_table ,它可以將多個名稱用作索引/列參數的參數。 我也認為您希望在索引上使用Weight(這使它在輸出中成為一列),而不是在列上(將不同的值轉換成列)。

In [27]: df.pivot_table(index=['Phase','Weight'], columns='CF', values='Value').reset_index()
Out[27]: 
CF Phase   Weight   1.0   1.5    2.0
0     AA    heavy  0.28  0.49   2.48
1     AB    light  3.26  5.10  11.70
2     BX      med  0.77  2.16   5.81
3     XY  x light -0.01  0.98   3.46

編輯:

關於您的另一個問題, .columns的.columns是一個索引(就像在行上一樣),除了實際值外,還具有.name 據我所知,它通常僅用於顯示目的。

In [74]: df.columns
Out[74]: Index([u'Phase', u'Weight', 1.0, 1.5, 2.0], dtype='object')

In [75]: df.columns.name
Out[75]: 'CF'

In [76]: df.columns.values
Out[76]: array(['Phase', 'Weight', 1.0, 1.5, 2.0], dtype=object)

暫無
暫無

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

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