python - 打印满足特定条件的值的 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。我只是不知道该怎么做。
提前感谢您的帮助!
解决方案
由于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']
推荐阅读
- laravel - 在 laravel 项目中,我试图从 mysql 数据库表“类别”中获取数据,除了一个“标题”之外的所有字段都返回
- javascript - 与 Vuex、axios 和多个组件实例进行封装数据共享
- ruby-on-rails - 未初始化的常量 GraphqlController::GraphQLSchema
- android-source - 如何解决 AOSP 构建中的 API Lint 错误?
- node.js - 用 brew 安装纱线
- metal - 我想用金属将RGB转换为YUV
- directx-11 - HSLT 自定义 Direct2D 效果中分辨率高时的纹理分割
- javascript - 将对象数组传递给组件 VueJ
- docker - 从 docker 容器运行 Gazebo(或turtlebot 3)时出现问题
- javascript - 如何通过自动检测学科代码的学分和分数的成绩来计算 GPA