我有这个数据框:
columns= ['1972 [YR1972]',
'1973 [YR1973]',
'2007 [YR2007]',
'Country Name',
'Series Code']
index = np.arange(10) # array of numbers for the number of samples
df = pd.DataFrame(columns=columns, index = index)
基本上有大约100.000行,因为大约有220个国家和1000个系列代码。
不幸的是,这个结构并不是我真正喜欢的 - 我想转换整个事情,以便我将系列代码作为列,年份列和国家列 - 而值是在行中。我想我应该使用枢轴功能,但结果不是我的预期。 有人可以指导我如何用熊猫实现这一目标吗?
结果应如下所示:
columns= ['Year', 'Country', 'SeriesCode1', 'SeriesCodeN']
index = np.arange(6) # array of numbers for the number of samples
df = pd.DataFrame(columns=columns, index = index)
df['Year'] = ['1972 [YR1972]', '1973 [YR1973]', '2007 [YR2007]']*2
df['Country'] = ["Afghanistan"] *3 + [ "Zimbabwe"]*3
答案 0 :(得分:1)
如果我正确理解您的问题,您可以使用pd.melt()执行此操作。
您需要的只是:
pd.melt(df, id_vars=['Country Name', 'Series Code'], var_name='Year', value_name='your_values')
它会为你弄平数据。