如何将多列DataFrame拆分为以指定日期为索引的单个衍生DataFrame?
解决方案
步骤说明
- 预处理原始数据的月份列,去除空格得到规范列名(如
Jan23) - 转置原始DataFrame,将原指标列(A/B/C等)转为行,处理后的月份作为列
- 设置统一索引
20230808 - 遍历转置后的行,生成对应每个指标的单独DataFrame(推荐用字典存储,方便批量管理大量列)
代码实现
import pandas as pd # 构造原始DataFrame(实际场景可替换为你的数据读取逻辑,如pd.read_csv) df = pd.DataFrame({ 'Month': ['Jan 23', 'Feb 23'], 'A': [5, 8], 'B': [7, 10], 'C': [3, 8] }) # 处理月份列,去除空格 df['Month'] = df['Month'].str.replace(' ', '') # 转置数据并设置统一索引 transposed_df = df.set_index('Month').T transposed_df.index = [20230808] # 生成每个指标对应的单独DataFrame,存储在字典中(批量处理大量列更高效) dfs_dict = {} for col_name in transposed_df.columns: dfs_dict[f'Df{col_name}'] = transposed_df[[col_name]] # 提取单个DataFrame示例 DfA = dfs_dict['DfA'] DfB = dfs_dict['DfB'] DfC = dfs_dict['DfC'] # 验证结果 print("DfA:\n", DfA) print("\nDfB:\n", DfB) print("\nDfC:\n", DfC)
输出结果
DfA: Jan23 Feb23 20230808 5 8 DfB: Jan23 Feb23 20230808 7 10 DfC: Jan23 Feb23 20230808 3 8
注意事项
如果原始DataFrame列数很多,用字典dfs_dict存储所有衍生DataFrame会比单独创建变量更便于管理,避免变量名冲突和混乱。
内容的提问来源于stack exchange,提问作者Nuctrip
相关产品推荐
相关产品推荐

