gpt4 book ai didi

python - 在数据框中查找列的共现

转载 作者:行者123 更新时间:2023-11-28 18:25:37 25 4
gpt4 key购买 nike

我有一个包含数千列的数据框。大多数列的值仅与其他列同时出现。例如:

A       | B    | C
Null |"val" |"other"
"random"|"rand"| Null

在这个例子中,我想要一个输出告诉我:

  • A列与B列同时出现
  • B列与A和C同时出现
  • C列与B列同时出现

我可以编写某种循环并为每一列执行一些 sql,但这会非常昂贵。

我使用 python,欢迎任何可以提供帮助的库或代码:)

抱歉,如果使用了错误的术语来描述问题......

谢谢

最佳答案

我不知道是否有一种无需遍历列即可执行此操作的好方法。我想我会像这样直接做一些事情:

np.random.seed(13)
df=pd.DataFrame(np.random.choice([np.nan,1,2],9).reshape([3,3]), columns=list('abc'))

a b c
0 2.0 NaN 2.0
1 NaN 2.0 2.0
2 NaN 1.0 NaN

cols = df.columns
for i in cols:
for j in cols.drop(i):
print( 'percent of', j, 'not null if', i, 'is not null:',
(df[i].notnull() & df[j].notnull()).sum() / df[i].notnull().sum())

percent of b not null if a is not null: 0.0
percent of c not null if a is not null: 1.0
percent of a not null if b is not null: 0.0
percent of c not null if b is not null: 0.5
percent of a not null if c is not null: 0.5
percent of b not null if c is not null: 0.5

因此,如果百分比为 0.0,则共现为零;如果百分比为 1.0,则为完全共现。

但是请注意,使用此方法时列不一定是对称的。如果“a”不为空,则“c”也将为非空,但在这种情况下反之则不然。

显然,您可以在此处使用其他定义,这只是对我来说最自然的定义。

关于python - 在数据框中查找列的共现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41705406/

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