【问题标题】:How to convert multiple rows into stacked columns in excel /python?如何在excel / python中将多行转换为堆叠列?
【发布时间】:2019-06-06 23:37:26
【问题描述】:

有没有一种简单的方法可以从 A 型转换为 B 型。

注意:Kutools(Excel 中的插件)为此提供了一个解决方案,但它并不健壮且似乎不可扩展。

有什么解决方法吗?

【问题讨论】:

  • @Shubhenda :请避免在问题中发布图像,很难复制数据框。但是,我已经为您添加了答案,请检查。 :)
  • 如果您有 Excel 2010+,您可以使用 Power Query unpivot 除第一列之外的所有列,并添加您在您的结果。

标签: python excel pandas dataframe excel-formula


【解决方案1】:

考虑到您可以使df 如下所示:(只需删除上面写着Type A 的行)

    GDP per capita      1950    1951    1952    1953
0   Antigua and Barbuda 3544    3633    3723    3817
1   Argentina           7540    7612    7019    7198
2   Armenia             1862    1834    1914    1958
3   Aruba               3897    3994    4094    4196
4   Australia           12073   12229   12084   12228
5   Austria             6919    7382    7386    7692

使用pd.melt()

>>pd.melt(df,id_vars='GDP per capita',var_name='Year',value_name='GDP Value')

    GDP per capita      Year    GDP Value
0   Antigua and Barbuda 1950    3544
1   Argentina           1950    7540
2   Armenia             1950    1862
3   Aruba               1950    3897
4   Australia           1950    12073
5   Austria             1950    6919
6   Antigua and Barbuda 1951    3633
7   Argentina           1951    7612
8   Armenia             1951    1834
9   Aruba               1951    3994
10  Australia           1951    12229
11  Austria             1951    7382
12  Antigua and Barbuda 1952    3723
13  Argentina           1952    7019
14  Armenia             1952    1914
15  Aruba               1952    4094
16  Australia           1952    12084
17  Austria             1952    7386
18  Antigua and Barbuda 1953    3817
19  Argentina           1953    7198
20  Armenia             1953    1958
21  Aruba               1953    4196
22  Australia           1953    12228
23  Austria             1953    7692

要获得与您发布的图片完全相同的外观,请使用:

df1=pd.melt(df,id_vars='GDP per capita',var_name='Year',value_name='GDP Value')
df1.rename(columns={'GDP per capita':'Country'},inplace=True)
df1['GDP'] = 'GDP per capita'
df1 = df1[['GDP','Country','Year','GDP Value']]
df1.to_csv('filepath+filename.csv,index=False)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-05
  • 2016-01-18
  • 2019-03-27
  • 1970-01-01
相关资源
最近更新 更多