尝试合并两列以创建数据框名称时,可能会导致SyntaxError的原因?

时间:2019-11-21 16:05:01

标签: python pandas

我的目标是使用源数据帧中的两列作为每个col1 col2组合的命名约定来开发多个数据帧名称。

例如,如果perioddps是源数据框中的列,我想为每个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:无效语法错误。

我的问题是什么可能导致此错误?我应该先检查和清理的原始数据是否有问题?

谢谢

2 个答案:

答案 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循环