python - 打印满足特定条件的值的列名和行名

标签 python pandas dataframe

我拼命地想弄清楚如何打印出我的 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。
我只是不知道如何做到这一点。
在此先感谢您的帮助!

最佳答案

由于 NaN,不得不稍微更改 df .替换为 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']

关于python - 打印满足特定条件的值的列名和行名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64810857/

相关文章:

python - 数据框的填充列

python-3.x - 基于 Pandas 中的另一个数据框计算多列的加权平均结果

python - 自定义 sharex 刻度标签

python - 如何计算包括零出现在内的分类值?

python - 根据其他列值/Pandas -Python 在数据框中创建 ID 列

python - 如何查看日期在哪个日期范围内并相应地分配值?

具有特定扩展名 "html"的 Python 文件 IO 失败

python asyncios create_task 和 await 函数

python - Elasticsearch:文档未通过自定义映射添加到索引中

python - 在 python 中可视化数据