有没有办法添加具有特定条件的列



有一个数据帧。在检查了以下条件后,我想添加列"e"。

  1. 如果"c"的组件在列"a"中,并且"d"的组件位于同一行的列"b"中,则e的组件可以否则">
import pandas as pd
import numpy as np
A = {'a':[0,2,1,4], 'b':[4,5,1,7],'c':['1','2','3','6'], 'd':['1','4','2','9']} 
df = pd.DataFrame(A) 

我想得到的结果是

A = {'a':[0,2,1,4], 'b':[4,5,1,7],'c':['1','2','3','6'], 'd':['1','4','2','9'], 'e':['OK','','','']} 

您可以在左侧的['a', 'b']和右侧的['c', 'd']上将df与自身合并。如果索引在合并中"幸存",则e应为OK:

df['e'] = np.where(
df.index.isin(df.merge(df, left_on=['a', 'b'], right_on=['c', 'd']).index),
'OK', '')
df

输出:

a  b  c  d   e
0  0  4  1  1  OK
1  2  5  2  4    
2  1  1  3  2    
3  4  7  6  9    

附言:在合并之前,我们需要将ab列转换为str类型(或将cd转换为数字(,以便比较ca,以及db:

df[['a', 'b']] = df[['a', 'b']].astype(str)

最新更新