gpt4 book ai didi

python - 如果行在 Pandas 中包含特定值,则删除列

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:12 26 4
gpt4 key购买 nike

我开始学习 Pandas。我在 SO 中看到了很多问题,人们询问如果列与特定值匹配如何删除行。

我的情况恰恰相反。想象一下有这个数据框:

Dataframe

您想知道的是,如果任何列在其任何行中具有值 salty,则应删除该列,结果是:

Dataframe 2

我尝试过与此有几个相似之处:

if df.loc[df['A'] == 'salty']:
df.drop(df.columns[0], axis=1, inplace=True)

但是我完全找不到关于如何根据该列的行值删除列的文档。该代码是查找特定列和始终删除第一列的混合体(因为我的想法是在 for 循环中的所有列中搜索该列中一行的值。

最佳答案

对您的值进行比较,然后使用 DataFrame.any 获取要索引的掩码:

df.loc[:, ~(df == 'Salty').any()]

如果你坚持使用drop,这就是你需要做的。传递索引列表:

df.drop(columns=df.columns[(df == 'Salty').any()])

df = pd.DataFrame({
'A': ['Mountain', 'Salty'], 'B': ['Lake', 'Hotty'], 'C': ['River', 'Coldy']})
df
A B C
0 Mountain Lake River
1 Salty Hotty Coldy

(df == 'Salty').any()
A True
B False
C False
dtype: bool

df.loc[:, ~(df == 'Salty').any()]
B C
0 Lake River
1 Hotty Coldy

df.columns[(df == 'Salty').any()]
# Index(['A'], dtype='object')

df.drop(columns=df.columns[(df == 'Salty').any()])
B C
0 Lake River
1 Hotty Coldy

关于python - 如果行在 Pandas 中包含特定值,则删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56754831/

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