您现在的位置是:网站首页> 编程资料编程资料
Pandas筛选DataFrame含有空值的数据行的实现_python_
2023-05-26
267人已围观
简介 Pandas筛选DataFrame含有空值的数据行的实现_python_
数据准备
import pandas as pd df = pd.DataFrame([['ABC','Good',1], ['FJZ',None,2], ['FOC','Good',None] ],columns=['Site','Remark','Quantity'])
df

注意:上述Remark字段中的数据类型为字符串str类型,空值取值为'None',Quantity字段中的数据类型为数值型,空值取值为nan
1.筛选指定单列中有空值的数据行
# 语法 df[pd.isnull(df[col])] df[df[col].isnull()]
# 获取Remark字段为None的行 df_isnull_remark = df[df['Remark'].isnull()] # 获取Quantity字段为None的行 df_isnull_quantity = df[df['Quantity'].isnull()]
df_isnull_remark

df_isnull_quantity

提示
筛选指定单列中没有空值的数据行
# 语法 df[pd.notnull(df[col])] df[df[col].notnull()]
# 获取Remark字段为非None的行 df_notnull_remark = df[df['Remark'].notnull()] # 获取Quantity字段为非None的行 df_notnull_quantity = df[df['Quantity'].notnull()]
df_notnull_remark

df_notnull_quantity

2.筛选指定多列中/全部列中满足所有列有空值的数据行
# 语法 df[df[[cols]].isnull().all(axis=1)] df[pd.isnull(df[[cols]]).all(axis=1)]
在df基础上增加一行生成df1
df1 = pd.DataFrame([['ABC','Good',1], ['FJZ',None,2], ['FOC','Good',None], [None,None,None] ],columns=['Site','Remark','Quantity'])

# 获取df1所有列有空值的数据行 all_df_isnull = df1[df1[['Site','Remark','Quantity']].isnull().all(axis=1)]
all_df_isnull

提示
筛选指定多列中/全部列中满足所有列没有空值的数据行
# 语法 df[df[[cols]].notnull().all(axis=1)] df[pd.notnull(df[[cols]]).all(axis=1)]
# 获取df1所有列没有空值的数据行 all_df_notnull = df1[df1[['Site','Remark','Quantity']].notnull().all(axis=1)]
all_df_notnull

3.筛选指定多列中/全部列中满足任意一列有空值的数据行
# 语法 df[df[[cols]].isnull().any(axis=1)] df[pd.isnull(df[[cols]]).any(axis=1)]
df1(数据源)

# 获取df1所有列中满足任意一列有空值的数据行 any_df_isnull = df1[df1[['Site','Remark','Quantity']].isnull().any(axis=1)]
any_df_isnull

提示
筛选指定多列中/全部列中满足任意一列没有空值的数据行
# 语法 df[df[[cols]].notnull().any(axis=1)] df[pd.notnull(df[[cols]]).any(axis=1)]
# 获取df1所有列中满足任意一列没有空值的数据行 any_df_notnull = df1[df1[['Site','Remark','Quantity']].notnull().any(axis=1)]
any_df_notnull

Numpy里边查找NaN值的话,使用np.isnan()
Pabdas里边查找NaN值的话,使用.isna()或.isnull()
import pandas as pd import numpy as np df = pd.DataFrame({'site1': ['a', 'b', 'c', ''], 'site2': ['a', np.nan, '', 'd'], 'site3': ['a', 'b', 'c', 'd']})df

df['contact_site'] = df['site1'] + df['site2'] + df['site3']
新增数据列后的df

res1 = df[df['site2'].isnull()] res2 = df[df['site2'].isna()] res3 = df[df['site2']=='']
res1

res2

res3

注意:res1和res2的结果相同,说明.isna()和.isnull()的作用等效
到此这篇关于Pandas筛选DataFrame含有空值的数据行的实现的文章就介绍到这了,更多相关Pandas筛选DataFrame空值行内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
您可能感兴趣的文章:
相关内容
- Pandas缺失值删除df.dropna()的使用_python_
- python 3.10上如何安装pyqt5_python_
- jetson上安装pycharm的详细过程_python_
- Python argparse 解析命令行参数模块详情_python_
- 如何利用python批量提取txt文本中所需文本并写入excel_python_
- Python matplotlib数据可视化图绘制_python_
- Python操作xlwings的实例详解_python_
- 教你使用Python从文件中提取IP地址_python_
- Python使用read_csv读数据遇到分隔符问题的2种解决方式_python_
- Python正则表达式以及常用匹配实例_python_
