python-3.x 删除包含-inf或NaN条目的 Dataframe 行

cld4siwp  于 2023-03-04  发布在  Python
关注(0)|答案(1)|浏览(294)

在Pandas数据框中,如果有等于-infNaN的条目,如何删除所有相关列。

nuypyhwy

nuypyhwy1#

如果保留其他类似空值(例如NoneNaT)并不重要,则用nan替换-inf,并删除包含任何空值的列(dropnahow arg的默认值为"any")

import numpy as np
import pandas as pd

df = pd.DataFrame({
    'a': [1,2,np.nan],
    'b': [1,-np.inf,3],
    'c': [1,2,3]
})
df = df.replace({-np.inf: np.nan}).dropna(axis=1)
df

输出:

c
0   1
1   2
2   3

否则我会这么做:

import numpy as np
import pandas as pd

TARGET_VALUES = [-np.inf, np.nan]

df = pd.DataFrame({
    'a': [1,2,np.nan],
    'b': [1,-np.inf,3],
    'c': ['a','b',None]
})
column_value_counts = df.isin(TARGET_VALUES).sum(axis=0)
df = df[column_value_counts[column_value_counts == 0].index.values].copy()
df

输出:

c
0   a
1   b
2   None

相关问题