我正在使用一个名为newdata.csv的CSV数据集,该数据集具有1997年至2015年186个国家/地区的腐败感知指数评级。以下是它的一个小快照:
在这里,岁月延伸到右边。 我想将数据放入我可以在python中使用的长格式。为此,我尝试使用pandas的融合功能。这段代码:
import pandas as pd
data = pd.read_csv("newdata.csv", encoding = "ISO-8859-1")
a = pd.melt(data, id_vars='Country', value_vars=[1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012, 2013, 2014, 2015])
然后我将其导出为我可以在excel中查看的新CSV,使用以下代码:
a.to_csv('Pythonoutput.csv', sep=',')
当我这样做时,我会根据需要获得country列和year列,但不会获得任何数据。这是我的结果:
答案 0 :(得分:1)
首先,阅读您的数据
df = pd.read_csv("newdata.csv", encoding = "ISO-8859-1")
您的数据索引为Country
,因此请让数据框通过set_index()
了解
df = df.set_index('Country')
要将所有列堆叠在一起,请使用stack()
df = df.stack()
通过堆叠,DataFrame会自动获得一个MultiIndex级别。最后重命名索引。 DataFrame可以将Country
推断为第一级的名称,但第二级还没有标签:
df.index.names = ['Country', 'Year']
现在您已准备好通过to_csv()
将其导出。使用header
- 参数
df.to_csv("Pythonoutput.csv", header=['CPI'])
全部放在一起:
df = pd.read_csv("newdata.csv", encoding = "ISO-8859-1").set_index('Country').stack()
df.index.names = ['Country', 'Year']
df.to_csv("Pythonoutput.csv", header=['CPI'])