如何在Pandas DataFrame中按指定条件创建新列?
解决方案
直接用矢量化操作就能搞定,比循环或者apply靠谱多了,给你两种实现方式:
方法一:用NumPy的np.select(多条件场景最清晰)
import pandas as pd import numpy as np # 假设你的DataFrame叫df # 定义三个判断条件 conditions = [ df['Finding Ageing in Days'] == 0, df['Finding Ageing in Days'] == 1, df['Finding Ageing in Days'] > 1 ] # 对应每个条件的输出结果 values = [None, '=1 day', '>1 day'] # 生成目标新列 df['Ageing'] = np.select(conditions, values)
方法二:用Pandas的loc赋值(不用额外导入库)
import pandas as pd # 先给新列设默认值(覆盖大部分大于1的情况) df['Ageing'] = '>1 day' # 再逐个覆盖特殊条件的行 df.loc[df['Finding Ageing in Days'] == 1, 'Ageing'] = '=1 day' df.loc[df['Finding Ageing in Days'] == 0, 'Ageing'] = None
为啥你之前用循环/apply没成功?
- 循环遍历行本身就不是Pandas的正确用法,效率极低还容易踩索引赋值的坑
- apply如果返回值类型不统一(比如混着None和字符串),可能导致列类型混乱,最终出现赋值失效的情况
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

