考虑以下 Pandas DataFrame: | val1 | val2 | val3 | val4------------------------------------ 'a' | 1 | NaN | NaN | NaN 'b' | 12 | 5 | NaN | 4 'c' | 3 | 6 | NaN | NaN 'd' | 4 | 7 | 6 | NaN 'f' | 1 | 8 | 7 | 10我怎样才能得到有值的行和Nan列。我找了几个小时,但所有的问题、答案和博客都是关于获取包含值的所有行或所有列NaN。我做了以下代码:row_has_NaN = df.isnull().any(axis=1)rows_list = df[row_has_NaN].index.values # Rowsfor row in rows_list: print(row) row_series = df.loc[row] columns_has_NaN = row_series.isnull() columns_list = row_series[columns_has_NaN].index.values # Columns by Row to_print = '\n\t'.join(columns_list) print(f"\t{to_print}")所以我得到:a val2 val3 val4b val3c val3 val4d val4但我想知道是否有更 Pythonic 或更简洁的方法来做到这一点。提前致谢
1 回答
PIPIONE
TA贡献1829条经验 获得超9个赞
我们有stack之后isna
s = df.isna().stack().loc[lambda x : x]
Out[75]:
'a' val2 True
val3 True
val4 True
'b' val3 True
'c' val3 True
val4 True
'd' val4 True
也可以reset_index在末尾添加
#df.isna().stack().loc[lambda x : x].reset_index()
添加回答
举报
0/150
提交
取消