按列名拆分DataFrame并命名为df_列名?现有代码报语法错误
问题描述
现有如下结构的DataFrame:
A B C D E 0 Orange Dad X Eyes 3d Navy 1 pink Mum Bored ooo NaN 2 Yellow NaN Sad Gray NaN
需要将该DataFrame按列名拆分为多个独立的DataFrame,每个拆分后的DataFrame命名为df_列名(例如df_A、df_B),期望输出示例:
>>> df_A A 0 Orange 1 pink 2 Yellow >>> df_B B 0 Dad 1 Mum 2 NaN
尝试了以下代码:
d={f'df_{i}': for i in df}
出现语法错误:
File "/var/folders/jd/lh_mnln92n17ysg8grr0000gn/T/ipykernel_2633/2946580.py", line 1 d={f'df_{i}': for i in df} ^ SyntaxError: invalid syntax
解决方法
你的代码语法错误是因为字典推导式缺少对应的值部分。以下两种方式可实现需求:
方式1:用字典存储拆分后的DataFrame
通过字典推导式,为每个列生成对应的单列DataFrame,便于统一管理:
# 假设原始DataFrame名为df df_dict = {f'df_{col}': df[[col]] for col in df.columns}
后续可通过df_dict['df_A']、df_dict['df_B']访问对应单列DataFrame。
方式2:直接创建独立变量
如果需要直接生成df_A、df_B这类全局/局部变量,可借助globals()或locals():
for col in df.columns: globals()[f'df_{col}'] = df[[col]]
执行后直接输入df_A即可得到对应单列DataFrame,完全匹配你期望的输出形式。
注意:用globals()会在全局命名空间创建变量,函数内操作建议用locals();但更推荐用字典存储,避免命名空间混乱。
内容的提问来源于stack exchange,提问作者Mimieffle
相关产品推荐
相关产品推荐

