gpt4 book ai didi

python - pandas 基于列子集的行选择

转载 作者:行者123 更新时间:2023-12-01 02:56:16 25 4
gpt4 key购买 nike

我有一个包含 4 列的 Pandas 数据框 - 如下所示:

          A                       B            C           D
2 c {4889, 9978, 1230, 4921} {30} 4
4 m {4889, 9978, 1230, 4921} {30} 4
0 a {4889, 1230, 4921} {30} 3
7 q {1240, 4921} {30} 2
9 x {9978, 1230} {30} 2

另外,我有一个这样的列表:

[[1230,4889],[1240, 4921]]

我想从数据框中选择 B 列值是任何列表项的超集的行。对于给定的示例,输出将是:

          A                       B            C           D
2 c {4889, 9978, 1230, 4921} {30} 4
4 m {4889, 9978, 1230, 4921} {30} 4
0 a {4889, 1230, 4921} {30} 3
7 q {1240, 4921} {30} 2

有什么好的方法吗?它并不像做这样的事情那么简单:

df.loc[df['B'] == 'xyz']

最佳答案

使用带有集合操作的numpy广播。注意:集合的 >= 返回右侧是否是左侧的子集的真值。相等部分允许相等的集合。

<小时/>
s = np.array([set(l) for l in [[1230, 4889], [1240, 4921]]])

m = (df['B'].values >= s[:, None]).any(0)

df[m]

A B C D
2 c {4889, 9978, 1230, 4921} {30} 4
4 m {4889, 9978, 1230, 4921} {30} 4
0 a {4889, 1230, 4921} {30} 3
7 q {1240, 4921} {30} 2

关于python - pandas 基于列子集的行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44190161/

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