
Python Pandas:基于列数据类型进行条件赋值
本文演示如何在 Pandas DataFrame 中,根据 A 列和 B 列的数据类型执行条件赋值。假设我们有一个名为 df 的 DataFrame,包含 A 列和 B 列。
目标:
判断 A 列和 B 列中对应行的值是否均为整数类型。如果是,则在新的“判断”列中赋值为 "OK";否则,赋值为 "NO"。
解决方案:
利用 Pandas 的 apply() 方法结合 lambda 函数,可以优雅地实现这一目标:
import pandas as pd import numpy as np df['判断'] = df.apply(lambda row: "OK" if isinstance(row['A列'], (int, np.integer)) and isinstance(row['B列'], (int, np.integer)) else "NO", axis=1)
代码解释:
-
df.apply(lambda row: ..., axis=1):对 DataFrame 的每一行应用 lambda 函数。axis=1指定按行操作。 -
lambda row: ...:定义一个匿名函数,它接收 DataFrame 的每一行作为row参数。 -
isinstance(row['A列'], (int, np.integer)) and isinstance(row['B列'], (int, np.integer)):检查 A 列和 B 列的值是否都为整数类型。np.integer用于兼容 NumPy 整数类型。 -
"OK" if ... else "NO":根据条件返回 "OK" 或 "NO"。
这种方法比使用 astype(int) 更为稳健,因为它不会因为类型转换错误而抛出异常,并且直接检查原始数据类型。 如果 A 列或 B 列包含非数值数据,astype(int) 会产生错误,而 isinstance 方法则能正确处理这种情况。










