从多个DataFrames收集重复的列名

时间:2018-11-25 15:22:07

标签: python pandas merge data-modeling

基本上,我正在尝试创建一个列表,以便可以将我的数据框合并到重复的列名称上。以下是我目前的设置方式。

sheets = [df1, df2, df3, df4]
col_list = []
dup_list = []

for i in sheets:
    col_list.append(i.columns.values)
    for c in col_list:
        if c.duplicated():
            dup_list.append(c)

我收到以下错误

  

AttributeError:“ numpy.ndarray”对象没有“重复”属性

我知道没有重复的方法。获取出现在所有数据框中的重复列名称的最佳方法是什么。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我相信您需要set.intersection并将所有列名映射到set

df1 = pd.DataFrame(columns=list('acbd'))
df2 = pd.DataFrame(columns=list('abde'))
df3 = pd.DataFrame(columns=list('cbad'))
df4 = pd.DataFrame(columns=list('acbf'))

sheets = [df1, df2, df3, df4]
L = [x.columns for x in sheets]
#less readable
#L = [x for x in sheets]
dup_list  = list(set.intersection(*map(set,L)))
print (dup_list)
['a', 'b']