gpt4 book ai didi

python - Pandas:从 DataFrame 中删除所有带有 nans、0 和 NA 的列

转载 作者:行者123 更新时间:2023-11-28 17:38:59 28 4
gpt4 key购买 nike

我有一个如下所示的 DataFrame:

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 2.1, np.nan, 4.7, 5.6, 6.8],
'B': [0, np.nan, np.nan, 0, 0, 0],
'C': [0, 0, 0, 0, 0, 0.0],
'D': [5, 5, 5, 5, 5.6, 6.8],
'E': ['NA', 'NA', 'NA', 'NA', 'NA', 'NA'],})

如何将列中的所有 NANans0 删除,以便获得以下输出?

df2 = pd.DataFrame({'A': [1, 2.1, np.nan, 4.7, 5.6, 6.8],
'D': [5, 5, 5, 5, 5.6, 6.8],})

到目前为止,我知道 .dropna() 会去掉所有的 nan 我也尝试过 df2=df[~(df==0)。 all(axis=1)] 但它不起作用。

最佳答案

您可以尝试使用 df.isin()all() 来查找不只包含空值的列数组,然后使用该数组选择df的相关列:

>>> df[df.columns[(~df.isin([NaN, 'NA', 0])).all().values]]
A D
0 1.0 5.0
1 2.1 5.0
2 NaN 5.0
3 4.7 5.0
4 5.6 5.6
5 6.8 6.8

或者更简洁:df.loc[:, (~df.isin([NaN, 'NA', 0])).all()]

关于python - Pandas:从 DataFrame 中删除所有带有 nans、0 和 NA 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27273428/

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