pandas行转列

需求

原始文件
Year    Country medal   no of medals
1896    Afghanistan Gold    5
1896    Afghanistan Silver  4
1896    Afghanistan Bronze  3
1896    Algeria Gold    1
1896    Algeria Silver  2
1896    Algeria Bronze  3
目标
Year    Country Gold    Silver  Bronze
1896    Afghanistan 5   4   3
1896    Algeria     1   2   3

方法

  1. 保存为’/home/yanghao3/pandas.csv’
  2. 脚本
df = pd.read_csv('/home/yanghao3/pandas.csv')
medals = df.pivot_table('no', ['Year', 'Country'], 'medal')
medals.reset_index(level=0,inplace=True)
medals.reset_index(level=0,inplace=True)
#改变列的顺序
medals = medals.reindex_axis(['Year', 'Country', 'Gold', 'Silver', 'Bronze'], axis = 1)
medals.to_csv('/home/yanghao3/result.csv')
  1. 结果/home/yanghao3/result.csv

参考

  1. http://www.4byte.cn/question/678172/python-pandas-convert-rows-as-column-headers.html
  2. http://stackoverflow.com/questions/20461165/how-to-convert-pandas-index-in-a-dataframe-to-a-column