编写检查所有pandas DataFrame列值是否满足某个值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写检查所有pandas DataFrame列值是否满足某个值?相关的知识,希望对你有一定的参考价值。

我正在为软件包编写支票。 pandas DataFrame中的元素满足某些条件;如果他们不这样做,我将提出一个用Python编写的ValueError异常。

以下是pandas DataFrame的示例:

import pandas as pd
import numpy as np

dict1 = {'file': ['filename2', 'filename2', 'filename3', 'filename4', 
         'filename4', 'filename3'], 'amount': [3, 4, 5, 1, 2, 1], 
         'front': [21889611, 36357723, 196312, 11, 42, 1992], 
         'back':[21973805, 36403870, 277500, 19, 120, 3210], 
         'type':['A', 'A', 'A', 'B', 'B', 'C']}

df1 = pd.DataFrame(dict1)
print(df1)

        file  amount     front      back type
0  filename2       3  21889611  21973805    A
1  filename2       4  36357723  36403870    A
2  filename3       5    196312    277500    A
3  filename4       1        11        19    B
4  filename4       2        42       120    B
5  filename3       1      1992      3210    C

我看过检查某些值的最有效方法是使用sets,例如如果列type包含不是ABC的元素,则抛出错误:

if not set(['A', 'B', 'C']).issubset(df1['type']):
    raise ValueError('Pandas DataFrame contains improper values in "type" column')

题:

我如何最有效地检查条件?例如我想检查列amount是否包含大于0的整数。如果此列中有任何零,负整数或非整数,则引发ValueError()

答案

您可以只过滤一列,获取返回的数据帧的长度,并在if语句中使用它:

len(df1[df1['amount'] > 0])

以上是关于编写检查所有pandas DataFrame列值是否满足某个值?的主要内容,如果未能解决你的问题,请参考以下文章

根据列值删除Python Pandas中的DataFrame行[重复]

Pandas Dataframe 根据列值将值展平到单元格

使用 Pandas DataFrame 将列表等列值转换为多行

将列添加到包含其他列值列表的 pandas DataFrame

根据列值对带有 MultiIndex 的 pandas DataFrame 进行排序

Pandas Dataframe Multiindex 按级别和列值排序