我有一个数据框架词典df_dict
。我需要根据另一个字典groups
将它们连接在一起。我的数据示例如下。所有数据框都具有相同的列但行数不同。
df_dict = {'df1': pd.DataFrame([[2, 1], [3, 1]], columns=['A', 'B'], index = [1, 2]),
'df2': pd.DataFrame([[5, 1], [6, 2], [4, 1]], columns=['A', 'B'], index = [1, 2, 3]),
'df3': pd.DataFrame([[3, 1], [3, 6,], [2, 7], [5, 8], [8, 2]], columns=['A', 'B'], index = [1, 2, 3, 4, 5]),
'df4': pd.DataFrame([[3, 1], [2, 7], [8, 2], [0, 2]], columns=['A', 'B'], index = [1, 2, 3, 4])}
groups = {'group1': ['df1', 'df2'], 'group2': ['df3', 'df4']}
结果new_df_dict
看起来像是:
{'group1':
A B
1 2 1
2 3 1
3 5 1
4 6 2
5 4 1,
'group2':
A B
1 3 1
2 3 6
3 2 7
4 5 8
5 8 2
6 3 1
7 2 7
8 8 2
9 0 2}
非常感谢您的帮助。
答案 0 :(得分:2)
你可以在字典理解中使用concat:
{group: pd.concat([df_dict[df] for df in dfs]) for group, dfs in groups.items()}
Out:
{'group1': A B
1 2 1
2 3 1
1 5 1
2 6 2
3 4 1, 'group2': A B
1 3 1
2 3 6
3 2 7
4 5 8
5 8 2
1 3 1
2 2 7
3 8 2
4 0 2}
答案 1 :(得分:0)
我将如何做。
new_df_dict = {}
for k,v in groups.items():
temp_df_arr = []
for df_name in v:
temp_df_arr.append(df_dict[df_name])
new_df_dict[k] = pd.concat(temp_df_arr).reset_index(drop=True)
new_df_dict[k].index = new_df_dict[k].index + 1
print(new_df_dict)