Python Pandas:根据数据类型在DataFrame中赋值“OK”或“NO”
本文介绍如何使用Python Pandas库,根据DataFrame中两列(例如'a列'和'b列')的数据类型,为新列(例如'结果')赋值“OK”或“NO”。如果'a列'和'b列'中对应行的值均为整数类型,则新列赋值为“OK”,否则赋值为“NO”。
方法:
我们可以利用Pandas的apply()方法结合isinstance()函数实现此功能。apply()方法可以对DataFrame的行或列进行逐元素操作,而isinstance()函数则用于判断数据类型。
代码示例:
import pandas as pd # 创建示例DataFrame data = {'a列': [1, '2', 3, 4.5], 'b列': [5, 6, '7', 8]} df = pd.DataFrame(data) # 定义判断函数 def check_type(row): if isinstance(row['a列'], int) and isinstance(row['b列'], int): return 'OK' else: return 'NO' # 应用判断函数并创建新列 df['结果'] = df.apply(check_type, axis=1) # 打印结果 print(df)
输出:
a列 b列 结果 0 1 5 OK 1 2 6 OK 2 3 7 NO 3 4.5 8 NO
代码解释:
- 我们首先创建了一个示例DataFrame。
- check_type函数接受DataFrame的一行作为输入,并检查'a列'和'b列'的值是否都是整数。
- df.apply(check_type, axis=1)将check_type函数应用于DataFrame的每一行(axis=1指定按行操作),并将结果存储在新的'结果'列中。
此方法清晰简洁,易于理解和维护,并且避免了使用np.where带来的潜在性能问题,尤其是在处理大型DataFrame时。 它直接利用Pandas的内置函数,更符合Pandas的编程风格。