Pandas如何基于两列满足指定条件新增列且保留原数据顺序
解决方法
- 原有代码乱序的原因是你将正确、错误数据拆分为两个子表后再拼接,会强制把所有正确行前置、错误行后置,自然打乱原始顺序,同时还容易出现两个子表列不一致、字段丢失的问题。
直接在原DataFrame上新增accuracy列即可,完全保留原有行顺序和所有列,代码如下:
# 匹配规则可根据你的实际业务调整,以下规则是根据你给出的样例数据匹配逻辑编写:red对应R、blue对应B、green对应G # 如果你原有业务确实是green对应V、blue对应A、red对应R,改回你原来的c1/c2/c3条件即可 c1 = df['color'].eq('green') & df['value'].eq('G') c2 = df['color'].eq('blue') & df['value'].eq('B') c3 = df['color'].eq('red') & df['value'].eq('R') m = c1 | c2 | c3 # 方法1:无需导入额外依赖,直接赋值即可 df['accuracy'] = 'I' df.loc[m, 'accuracy'] = 'C' # 方法2:用numpy.where实现一行赋值(需要提前执行import numpy as np) # df['accuracy'] = np.where(m, 'C', 'I')
运行后直接输出df就能得到你需要的结果,所有原有列、行顺序都不会发生变化。
内容的提问来源于stack exchange,提问作者dazai
相关产品推荐
相关产品推荐

