首页 > 解决方案 > 打印满足特定条件的值的 colname 和 rowname

问题描述

我拼命地试图弄清楚如何打印出我的df中特定值的行索引和列名。

我有以下df:

raw_data = {'first_name': [NaN, 'Molly', 'Tina', 'Jake', 'Amy'], 
        'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'], 
        'age': [42, 52, NaN, 24, 73], 
        'preTestScore': [4, 24, 31, 33, 3],
        'postTestScore': [25, 94, 57, 62, 70]}

df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 
'preTestScore','postTestScore'])

我现在想打印出 NaN 的索引和列名:

There is a missing value in row 0 for first_name.
There is a missing value in row 2 for age.

我进行了很多搜索,总是找到如何为一行做某事。我的想法是首先用 False 和 True 创建一个 df

na = df.isnull()

然后我想应用一些函数来打印每个 NaN 值的行号和 col_name。我只是不知道该怎么做。

提前感谢您的帮助!

标签: pythonpandasdataframe

解决方案


由于NaN. 替换为np.nan

import numpy as np
import pandas as pd
raw_data = {'first_name': [np.nan, 'Molly', 'Tina', 'Jake', 'Amy'], 
        'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'], 
        'age': [42, 52, np.nan, 24, 73], 
        'preTestScore': [4, 24, 31, 33, 3],
        'postTestScore': [25, 94, 57, 62, 70]}

你可以这样做

dfs = df.stack(dropna = False)
[f'There is a missing value in row {i[0]} for {i[1]}' for i in dfs[dfs.isna()].index]

打印一个列表

['There is a missing value in row 0 for first_name',
 'There is a missing value in row 2 for age']

推荐阅读