如何使用Pandas Melt将DataFrame表头转换为行数据?
Pandas DataFrame 列转行:Acct列转换
需求
将DataFrame中所有以Acct开头的列转为Acct列的行值,同时保留Year列的分组关联,对应数值存入Amount列。
初始数据
import pandas as pd df = pd.DataFrame({'Year': {0: 2022, 1: 2023, 2: 2024}, 'Acct 1': {0: 100, 1: 300, 2: 500}, 'Acct 2': {0: 200, 1: 400, 2: 600}})
解决方案
使用pandas.melt()函数即可实现,关键是正确指定参数:
id_vars:保留不变的关联列(这里是Year)value_vars:需要转换为行的目标列(所有以Acct开头的列)var_name:原列名转换后的新列名(Acct)value_name:原列值转换后的新列名(Amount)
代码实现:
# 筛选所有以Acct开头的列 acct_columns = [col for col in df.columns if col.startswith('Acct')] # 执行melt转换 transformed_df = df.melt( id_vars='Year', value_vars=acct_columns, var_name='Acct', value_name='Amount' )
输出结果
print(transformed_df) # Year Acct Amount # 0 2022 Acct 1 100 # 1 2023 Acct 1 300 # 2 2024 Acct 1 500 # 3 2022 Acct 2 200 # 4 2023 Acct 2 400 # 5 2024 Acct 2 600
内容的提问来源于stack exchange,提问作者Evan
相关产品推荐
相关产品推荐

