数据删除复制了复杂的数据


import pandas as pd
search = pd.DataFrame({
"Code": ["BB", "BB", "CC", "CC", "CC", "DD", "DD"],
"N1": [22, 20, 33, 30, 31, 44, 40]
})
confirmed = pd.DataFrame({'N2': [30, 40, 50]})

嗨,亲爱的,我在学习 Python/pandas 进行数据分析时有一个问题。我上面有两个数据帧,我希望在确认的 df 中搜索数据值,如果该值匹配/出现在第一个 df(搜索(中,那么我们保留该值及其相应的"代码"并删除另一个相同的代码值。例如,30 在"已确认"的 df 中,它也出现在"搜索"数据帧中,因此我们保留值 30 及其代码 "CC",同时我们删除其他 "CC" 和值 (33, 31(。其他人也一样。

最后,"搜索"数据帧应如下所示:

Code  N1
0   BB  22
1   BB  20
2   CC  30
3   DD  40

作为Python数据新手,这对我来说是一个相当复杂的问题,所以如果有人有任何想法,请提供帮助。非常感谢。

检查后使用transformisin

s=search.N1.isin(confirmed.N2)
m=(~s).groupby(search['Code']).transform('all') | s
out=search[m]
out
Code  N1
0   BB  22
1   BB  20
3   CC  30
6   DD  40

与Yorben_s的答案类似,但也带有np.where

df = search.copy()
df['flag'] = np.where((df['N1'].isin(comfirmed['N2'])), 1, 0)
df['flag'] = np.where((df.groupby('Code')['flag'].transform(sum) == 0), 1, df['flag'])
df = df.loc[df['flag'] == 1].drop('flag', axis=1)
df

最新更新