gpt4 book ai didi

python - 两个或多个 DataFrame 列的交集

转载 作者:行者123 更新时间:2023-11-28 22:13:13 30 4
gpt4 key购买 nike

我试图找到三个数据帧的交集,但是 pd.intersect1d 不喜欢使用三个数据帧。

import numpy as np
import pandas as pd
df1 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('BCDE'))
df3 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('CDEF'))

inclusive_list = np.intersect1d(df1.columns, df2.columns, df3.columns)

错误:

ValueError: The truth value of a Index is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

inclusive_list 应仅包含列名 C 和 D。如有任何帮助,我们将不胜感激。谢谢。

最佳答案

为什么您当前的方法不起作用:

intersect1d不接受 N 数组,它只比较 2 个。

numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False)

从定义中可以看出,您将第三个数组作为 assume_unique 参数传递,并且由于您将数组视为单个 bool 值,因此您会收到一个 ValueError


您可以使用 functools.reduce 扩展 intersect1d 的功能以处理 N 数组:

from functools import reduce
reduce(np.intersect1d, (df1.columns, df2.columns, df3.columns))

array(['C', 'D'], dtype=object)

更好的方法

但是,最简单的方法是在 Index 对象上使用交集:

df1.columns & df2.columns & df3.columns

Index(['C', 'D'], dtype='object')

关于python - 两个或多个 DataFrame 列的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114085/

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