我在比较列和两个数据帧时遇到问题。
def function():
x = {'col1': ['first', 'second'], 'col2': [[1,4,5], [3,6]]}
y = {'col1': ['X', 'Y', 'Z'], 'col2': [1, 2, 3]}
df1 = pd.DataFrame(data=x)
df2 = pd.DataFrame(data=y)
如何检查df2['col2']
中的值是否在df1['col2']
中?我想得到一个新的数据帧,看起来像这个
col1 col2 new_col
0 X 1 first
1 Y 2 FALSE/ NaN (etc.)
2 Z 3 second
我的问题是,我不知道如何将单个元素(在实际数据中是domain_name(与domain_name列表进行比较。
您可以将df1
的col2
列explode
,然后将map
或merge
此列df2
df2['new_col'] = df2['col2'].map(df1.explode('col2', ignore_index=True)
.set_index('col2')['col1'])
# or
df2['new_col'] = df2[['col2']].merge(df1.explode('col2', ignore_index=True), on='col2', how='left')['col1']
print(df2)
col1 col2 new_col
0 X 1 first
1 Y 2 NaN
2 Z 3 second