我正在清理一些数据,我一直在努力解决一件事。
我有一个数据框架7740行和68列。
大多数列包含Nan值。
我感兴趣的是,删除NaN值时,它是NaN在这两列:[SERIAL_ID],[NUMBER_ID]
的例子:
<表类>
SERIAL_ID
NUMBER_ID
tbody><<tr>8 ry68u4r 南 8756 ert58759321 南 南 南 7896521 7 ey68u4r 南 95856 ert5 988888 南 南 南 4555555 表类>
我不知道为什么它只适用于3列,而不是68个原件。然而,我们可以通过其他方式获得期望输出。
使用boolean indexing
:
df[df[['SERIAL_ID', 'NUMBER_ID']].notnull().any(axis=1)]
您可以使用boolean
逻辑或简单地对任何给定的列执行如下操作:
import numpy as np
import pandas as pd
# sample dataframe
d = {'SERIAL_ID':['8RY68U4R', '8756ERT5', np.nan, np.nan],
'NUMBER_ID':[np.nan, 8759321, np.nan ,7896521]}
df = pd.DataFrame(d)
# apply logic to columns
df['nans'] = df['NUMBER_ID'].isnull() * df['SERIAL_ID'].isnull()
# filter columns
df_filtered = df[df['nans']==False]
print(df_filtered)
返回:
SERIAL_ID NUMBER_ID nans
0 8RY68U4R NaN False
1 8756ERT5 8759321.0 False
3 NaN 7896521.0 False