如何通过遍历DataFrame列名批量生成含日期列的子DataFrame?
用for循环按列名批量生成子DataFrame
当然可以用for循环按列名实现,比手动写167次高效太多。
实现思路
主DataFrame里除了首列dates,剩下的列都可以通过遍历列名来处理,每次取dates列和当前遍历的列组合成新的DataFrame。更推荐把这些新DataFrame存到字典里,比单独命名167个变量更整洁好管理。
代码示例
假设主DataFrame名为returns,代码如下:
# 创建字典存储所有子DataFrame sub_dfs = {} # 遍历除dates外的所有列名 for col_name in returns.columns[1:]: # 组合dates列和当前列生成新DataFrame sub_dfs[col_name] = returns[['dates', col_name]]
调用方式
之后要取某一列对应的DataFrame,直接通过列名从字典里调用即可:
# 获取energy对应的DataFrame energy_df = sub_dfs['energy'] # 获取health_care对应的DataFrame health_care_df = sub_dfs['health_care']
如果非要单独给每个子DataFrame命名变量(不推荐,变量过多不利于维护),也可以用globals()实现:
for col_name in returns.columns[1:]: globals()[col_name] = returns[['dates', col_name]]
这样会自动生成energy、health_care等变量,每个对应包含dates和对应列的DataFrame。
内容的提问来源于stack exchange,提问作者zact8
相关产品推荐
相关产品推荐

