gpt4 book ai didi

python - 查找数据框集合中的所有重复列

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:03 25 4
gpt4 key购买 nike

拥有一组数据框,目标是识别重复的列名并将它们作为列表返回。

例子

输入是3个数据帧df1, df2 and df3:

df1 = pd.DataFrame({'a':[1,5], 'b':[3,9], 'e':[0,7]})

a b e
0 1 3 0
1 5 9 7

df2 = pd.DataFrame({'d':[2,3], 'e':[0,7], 'f':[2,1]})

d e f
0 2 0 2
1 3 7 1

df3 = pd.DataFrame({'b':[3,9], 'c':[8,2], 'e':[0,7]})

b c e
0 3 8 0
1 9 2 7

输出是一个列表[b, e]

最佳答案

pd.Series.duplicated

由于您使用的是 Pandas,因此可以在连接列名后使用 pd.Series.duplicated:

# concatenate column labels
s = pd.concat([df.columns.to_series() for df in (df1, df2, df3)])

# keep all duplicates only, then extract unique names
res = s[s.duplicated(keep=False)].unique()

print(res)
array(['b', 'e'], dtype=object)

pd.Series.value_counts

或者,您可以提取一系列计数并识别计数大于 1 的行:

s = pd.concat([df.columns.to_series() for df in (df1, df2, df3)]).value_counts()

res = s[s > 1].index

print(res)
Index(['e', 'b'], dtype='object')

collections.Counter

经典的 Python 解决方案是使用 collections.Counter 后跟列表理解。回想一下 list(df) 返回数据框中的列,因此我们可以使用此 mapitertools.chain 生成可迭代的数据计数器

from itertools import chain
from collections import Counter

c = Counter(chain.from_iterable(map(list, (df1, df2, df3))))

res = [k for k, v in c.items() if v > 1]

关于python - 查找数据框集合中的所有重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51133424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com