[英]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.