あなたはDataFrame.pivot
を使用することができます。
df = df.pivot(index='Country', columns='Type', values='Num')
print (df)
Type Bronze Gold Silver
Country
China 26 26 18
GB 17 27 23
Russia 19 19 18
USA 38 46 37
DataFrame.set_index
とSeries.unstack
のもう一つの解決策:
df = df.set_index(['Country','Type'])['Num'].unstack()
print (df)
Type Bronze Gold Silver
Country
China 26 26 18
GB 17 27 23
Russia 19 19 18
USA 38 46 37
が、取得した場合:
ValueError: Index contains duplicate entries, cannot reshape
は、デフォルトでは、いくつかのaggreagte機能でpivot_table
が必要それはですが、あなたはsum
、first
使用することができます... unstack
でmean
をaggreagtingし、再構築して
#add new row with duplicates value in 'Country' and 'Type'
print (df)
Country Type Num
0 USA Gold 46
1 USA Silver 37
2 USA Bronze 38
3 GB Gold 27
4 GB Silver 23
5 GB Bronze 17
6 China Gold 26
7 China Silver 18
8 China Bronze 26
9 Russia Gold 19
10 Russia Silver 18
11 Russia Bronze 20 < - changed value to 20
11 Russia Bronze 100 < - add new row with duplicates
df = df.pivot_table(index='Country', columns='Type', values='Num', aggfunc=np.mean)
print (df)
Type Bronze Gold Silver
Country
China 26 26 18
GB 17 27 23
Russia 60 19 18 < - Russia get ((100 + 20)/ 2 = 60
USA 38 46 37
またはgroupby
:
df = df.groupby(['Country','Type'])['Num'].mean().unstack()
print (df)
Type Bronze Gold Silver
Country
China 26 26 18
GB 17 27 23
Russia 60 19 18 < - Russia get ((100 + 20)/ 2 = 60
USA 38 46 37
の
可能な重複[Pythonのパンダ:列ヘッダーとして行を変換](HTTP ://stackoverflow.com/questions/17298313/python-pandas-convert-rows-as-column-headers) – Aprillion
申し訳ありませんが、私はパンダの一般的な用語を乱用する可能性があります。まだ学習を続けています:-) – TruLa
@Aprillion - 'pivot_table'は必要ではありません。 – jezrael