我正在尝试使用pd.concat
组合 Dataframe 。
我有7个模型,根据年份分为2个(2021年和2022年),所以总共有14个 Dataframe ,每个包含4列。它们可以通过以下命令创建:
concat_list = ['expert_2021', 'expert_2022', 'forecast_168_2021', 'forecast_168_2022',
'forecast_24_2021', 'forecast_24_2022', 'forecast_custom_2021', 'forecast_custom_2022',
'forecast_lear_2021', 'forecast_lear_2022', 'forecast_standard_2021',
'forecast_standard_2022', 'auto_2021', 'auto_2022']
n = 14
df_list = [pd.DataFrame({"Price_REG1":[], "Price_REG2":[], "Price_REG3":[], "Price_REG4":[]}) for x in range(n)]
for i, j in zip(concat_list, range(14)):
locals()[i] = df_list[j]
现在,我想将这些 Dataframe 组合成8个新的 Dataframe ,每个 Dataframe 代表1年和1列,因此2年 * 4列= 8。我想在一个for循环中完成这一操作。我使用f字符串在年和列之间循环,将 Dataframe 放入一个列表中。
year_list = [2021, 2022]
prediction = []
for p in year_list:
for j, s in zip(range(1,5), range(4)):
a = pd.concat([f'forecast_24_{p}.Price_REG{j}', f'forecast_168_{p}.Price_REG{j}',
f'forecast_standard_{p}.Price_REG{j}', f'forecast_custom_{p}.Price_REG{j}',
f'expert_{p}.Price_REG{j}', f'forecast_lear_{p}.Price_REG{j}',
f'auto_{p}.Price_REG{j}'], axis=1)
prediction.append(a)
这就是TypeError: cannot concatenate object of type '<class 'str'>'; only Series and DataFrame objs are valid
所以,我知道字符串是问题所在,但我的问题是,是否有办法让这些字符串调用 Dataframe ,或者是否有其他的解决方案来解决这类问题?
谢谢你。
1条答案
按热度按时间rsl1atfo1#
您必须使用
globals()
来获取 Dataframe :注意:此处不能使用
locals()
,因为作用域是列表解析,您将无法访问 Dataframe 。