【发布时间】:2021-12-03 18:48:04
【问题描述】:
我的列表中有许多大型数据框。我将它们全部连接起来以生成一个大数据框。
df_list # This contains a list of dataframes
result = pd.concat(df_list, axis=0)
result.columns.duplicated().any() # This returns True
我的期望是 pd.concat 不会产生重复的列。
我想了解它何时会导致重复列,以便我可以调试源代码。
我无法用玩具数据集重现问题。
我通过运行df.columns.duplicated().any() 验证了输入数据框具有唯一的列。
使用的pandas版本是1.0.1
(Pdb) p result_data[0].columns.duplicated().any()
False
(Pdb) p result_data[1].columns.duplicated().any()
False
(Pdb) p result_data[2].columns.duplicated().any()
False
(Pdb) p result_data[3].columns.duplicated().any()
False
(Pdb) p pd.concat(result_data[0:4]).columns.duplicated().any()
True
【问题讨论】:
-
如果您在连接
axis=0时有重复的列,如代码pd.concat(df_list)所示,这可能意味着df_list中的一个或多个数据框具有重复的列名。您可以将最后一个代码循环到df_list中的每个元素以找到该数据框。[df.columns.duplicated().any() for df in df_list] -
@anky 是的。我已经这样做了。所有源数据框都有唯一的列 - 已验证。