我有两个熊猫数据框:
df1:
a b c
1 1 2
2 1 2
3 1 3
df2:
a b c
4 0 2
5 5 2
1 1 2
df1 = {'a': [1, 2, 3], 'b': [1, 1, 1], 'c': [2, 2, 3]}
df2 = {'a': [4, 5, 6], 'b': [0, 5, 1], 'c': [2, 2, 2]}
df1= pd.DataFrame(df1)
df2 = pd.DataFrame(df2)
我正在寻找一个函数,该函数将显示df1和df2在a
列中是否包含相同的值。
在示例中,我提供了df1.a
和df2.a
都具有a=1
。
如果df1和df2没有条目,其中列a
中的值相等,则该函数应返回None
或False
。
我该怎么做?我尝试了panda.merge
答案 0 :(得分:1)
您可以使用设置交集:
def col_intersect(df1, df2, col='a'):
s1 = set(df1[col])
s2 = set(df2[col])
return s1 & s2 else None
尝试使用merge
,可以尝试以下操作:
def col_match(df1, df2, col='a'):
merged = df1.merge(df2, how='inner', on=col)
if len(merged):
return merged[col]
else:
return None
答案 1 :(得分:1)
使用isin
和any
定义自己的功能
def yourf(x,y):
if any(x.isin(y)):
#print(x[x.isin(y)])
return x[x.isin(y)]
else:
return 'No match' # you can change here to None
Out[316]:
0 1
Name: a, dtype: int64
yourf(df1.b,df2.c)
Out[318]: 'No match'