2017-04-22 13 views
1

からなしの値を削除します。 DF = df.pivot(値= '国:私は、ピボットテーブルを使用していた私のようなデータフレーム持っているデータフレーム

High income  Middle income Low income 
1 Norway   Switzerland  Qatar 
2 Macao    India   Luxembourg 

:私のようなものが必要

Country Name Income Group 
1 Norway   High income 
2 Switzerland  Middle income 
3 Qatar   Low income 
4 Luxembourg  Low income 
5 Macao   High income 
6 India   Middle income 

を名前」、インデックス=なし、列= '所得グループ') と私のような何かを得る:

High income  Middle income Low income 
1 Norway   none   none 
2 none   Switzerland  none 
. 
. 
. 

を誰かがここでのピボットよりも優れたソリューションを提案できるので、私は値を扱う必要はありませんか?

答えて

1

このトリックは、値がgroupby/cumcountの新しい列indexを導入することです。 cumcountは、累積カウントを返す - こうして、各グループ内のアイテム番号:あなたがindex列たら

df['index'] = df.groupby('Income Group').cumcount() 
# Country Name Income Group index 
# 1  Norway High income  0 
# 2 Switzerland Middle income  0 
# 3  Qatar  Low income  0 
# 4 Luxembourg  Low income  1 
# 5  Macao High income  1 
# 6  India Middle income  1 

、所望の結果を旋回させることによって得ることができる。

import pandas as pd 
df = pd.DataFrame({'Country Name': ['Norway', 'Switzerland', 'Qatar', 'Luxembourg', 'Macao', 'India'], 'Income Group': ['High income', 'Middle income', 'Low income', 'Low income', 'High income', 'Middle income']}) 

df['index'] = df.groupby('Income Group').cumcount() + 1 
result = df.pivot(index='index', columns='Income Group', values='Country Name') 
result.index.name = result.columns.name = None 
print(result) 

収率

High income Low income Middle income 
1  Norway  Qatar Switzerland 
2  Macao Luxembourg   India 
関連する問題