Python 数据帧列比较

Python 数据帧列比较,python,regex,pandas,merge,Python,Regex,Pandas,Merge,我是python的初学者,很难找到关于如何解决遇到的问题的文档 我需要知道df1['id']中的值是否在df2['id_list']中,但是当我看到值是如何存储在df2中时遇到了一个障碍 当我导出创建我的“id_列表”系列的值时,它会像我在下面复制的一样打印出来,这就是问题所在。我不知道如何比较系列中如此不同的元素 希望这是有意义的,并感谢任何帮助 import pandas as pd df1 = {'id':['xx00000001', 'xx00000002', 'xx00000003'

我是python的初学者,很难找到关于如何解决遇到的问题的文档

我需要知道df1['id']中的值是否在df2['id_list']中,但是当我看到值是如何存储在df2中时遇到了一个障碍

当我导出创建我的“id_列表”系列的值时,它会像我在下面复制的一样打印出来,这就是问题所在。我不知道如何比较系列中如此不同的元素

希望这是有意义的,并感谢任何帮助

import pandas as pd

df1 = {'id':['xx00000001', 'xx00000002', 'xx00000003', 'xx00000004', 'xx00000005']
        }
df2={'id_list': ['text','xx00000001\r\nxx00000003\r\nxx00000004', 'xx00000003', 'xx00000004\r\ntext\r\nxx00000006', 'ss11111\r\ntext\r\nzz00000006\r\nxx00000005']
        }
desired = {'id':['xx00000001', 'xx00000002', 'xx00000003', 'xx00000004', 'xx00000005'],
        'id_list': ['text','xx00000001\r\nxx00000003\r\nxx00000004', 'xx00000003', 'xx00000004\r\ntext\r\nxx00000006', 'ss11111\r\ntext\r\nzz00000006\r\nxx00000005'],
        'located': [False, False, 'xx00000003', 'xx00000004', 'xx00000005']
        }


df1=pd.DataFrame(df1)
df2=pd.DataFrame(df2)
desired_df = pd.DataFrame(desired)
print(df1)
print(df2)
print(desired_df)

对于这种字符串问题,列表理解通常比内置的
pandas
string方法更快。您可以这样做:

desired_df = df1.join(df2)

desired_df['located'] = [i1 if i1 in i2 else False for i1, i2 in zip(df1['id'], df2['id_list']) ]

>>> desired_df
           id                                      id_list     located
0  xx00000001                                         text       False
1  xx00000002       xx00000001\r\nxx00000003\r\nxx00000004       False
2  xx00000003                                   xx00000003  xx00000003
3  xx00000004             xx00000004\r\ntext\r\nxx00000006  xx00000004
4  xx00000005  ss11111\r\ntext\r\nzz00000006\r\nxx00000005  xx00000005