如何实现Pandas数据框的列转行(将年份列合并为单个year列)?
如何实现Pandas数据框的列转行(将年份列合并为单个year列)?
嗨,这个需求太常见啦!用Pandas内置的melt()函数就能完美解决宽表转长表的问题,把分散在不同列的年份整合到单独的year列里。
我给你举个具体的例子,先模拟一下你的原始数据结构:
import pandas as pd # 假设你的原始数据长这样(country是示例的非年份列,你可以换成自己数据里的对应列) df = pd.DataFrame({ 'country': ['USA', 'Canada', 'UK'], '2020': [100, 200, 300], '2021': [150, 250, 350], '2022': [200, 300, 400] })
接下来用melt()转换:
# id_vars指定需要保留的非年份列(如果有多个可以写成列表,比如['country', 'category']) # var_name设置新的年份列名称为'year' # value_name设置年份对应数值的列名(你可以根据自己的数据改成实际的字段名,比如'gdp'、'sales') df_long = df.melt(id_vars=['country'], var_name='year', value_name='value')
如果你的原始数据没有需要保留的其他列,直接这么写就行:
df_long = df.melt(var_name='year', value_name='value')
另外,转换后的year列可能是字符串类型,如果需要转成整数方便后续分析,可以加一行:
df_long['year'] = df_long['year'].astype(int)
这样处理完之后,你的数据框就会变成你想要的长格式,所有年份都集中在单个year列里啦!
备注:内容来源于stack exchange,提问作者saibot_90
相关产品推荐
相关产品推荐

