我的目标是使用源数据帧中的两列作为每个col1 col2组合的命名约定来开发多个数据帧名称。
例如,如果period
和dps
是源数据框中的列,我想为每个period-dps
组合创建数据框,如下所示:
period = ['a','b','c']
dps = ['x','y','z']
for d in dps:
for p in period:
exec('{}{} = pd.DataFrame()'.format(p,d))
此代码经测试可以正常工作,但是当我合并实际数据时,出现 SyntaxError:无效语法错误。
我的问题是什么可能导致此错误?我应该先检查和清理的原始数据是否有问题?
谢谢
答案 0 :(得分:1)
请勿使用exec
。创建一个dict
来存储您的数据框。
period = ['a','b','c']
dps = ['x','y','z']
frames = {}
for d in dps:
for p in period:
frames[f'{p}{d}'] = pd.DataFrame()
您还可以考虑嵌套字典。
from collections import defaultdict
frames = defaultdict(dict)
for d in dps:
for p in period:
frames[p][d] = pd.DataFrame()
答案 1 :(得分:0)
您可以使用以下代码:
df_dict = {}
for p,d in zip(period,dps):
name = p+d
df = pd.DataFrame()
df_dict[name] = df
这将返回数据帧的字典,每个数据帧都命名为p + d,并避免使用嵌套的for循环