首页 > 解决方案 > 将多个变量转换为一列并使用熊猫创建匹配值列

问题描述

我有一个格式如下的表:

国家 国内生产总值 生活经验
美国 6.5 75
英国 9.5 78
意大利 5.5 80

我需要将上面的表格更改为下面表格的格式。这只是实际表格的一小部分,因此不幸的是,硬编码不会削减它。

国家 指标名称 价值
美国 国内生产总值 6.5
美国 生活经验 75
英国 国内生产总值 9.5
英国 生活经验 78
意大利 国内生产总值 5.5
意大利 生活经验 80

这是创建第一个表的代码:

import pandas as pd
df = pd.DataFrame({'Country':["USA", "UK", "Italy"],
                  'GDP':[6.5, 9.5, 5.5],
                  'LifeExp':[75,78,80]})

我以前从未在 stackoverflow 上上传过任何东西,所以我希望我已经为某人提供了足够的信息来帮助我解决这个问题。

提前致谢!

标签: pythonpandasdataframeformattingtransform

解决方案


您可以使用.melt()with .sort_values(),如下所示:

(df.melt(id_vars='Country', var_name='Indicator name', value_name='Value')
   .sort_values('Country', ascending=False)
).reset_index(drop=True)




# Result

  Country Indicator name  Value
0     USA            GDP    6.5
1     USA        LifeExp   75.0
2      UK            GDP    9.5
3      UK        LifeExp   78.0
4   Italy            GDP    5.5
5   Italy        LifeExp   80.0

您可以选择列的排序顺序Country。如果您希望它按升序排列,您可以简单地删除函数ascending=False中的参数.sort_values()


推荐阅读