我有一个df,我希望找到该df值,该值在每个选定列中的前2行中重复。我该怎么办?
在excel中,我可以通过= if(countif(A1:B2,C1),“ True”,“ False”)来做到这一点
c = {'N1': [1,1,2,3,4,4,5],'N2': [2,3,4,4,5,6,7],'N3':[3,7,5,5,6,7,8],}
df = pd.DataFrame(c, columns=['N1','N2','N3'])
c = {'N1': [1,1,2,3,4,4,5],'N2': [2,3,4,4,5,6,7],'N3':[3,7,5,5,6,7,8],
"Result1":['NA','NA','True','True','True','True','True'],
"Result2":['NA','NA','False','True','True','True','True'],
"Result3":['NA','NA','False','True','False','False','False']}
df = pd.DataFrame(c, columns=['N1','N2','N3','Result1','Result2','Result3'])
上述预期结果。
答案 0 :(得分:1)
创建另一个具有2个移位的DataFrame,然后检查是否在这6个值中的任何一个中找到每一列的值。
u = pd.concat([df.shift(x) for x in range(1, 3)], axis=1, ignore_index=True)
for i in range(df.shape[1]):
df[f'Result{i+1}'] = u.eq(df.iloc[:, i], axis=0).any(1)
cols = [x for x in df.columns if 'Result' in x]
df.loc[s.isnull().any(1), cols] = 'NA'
N1 N2 N3 Result1 Result2 Result3
0 1 2 3 NA NA NA
1 1 3 7 NA NA NA
2 2 4 5 True False False
3 3 4 5 True True True
4 4 5 6 True True False
5 4 6 7 True True False
6 5 7 8 True True False