我是python的初学者,并且很难找到有关如何解决遇到的问题的文档。
我需要知道df1 ['id']中的值是否在df2 ['id_list']中,但是当我看到这些值是如何存储在df2中时遇到了一个障碍
当我导出创建“ id_list”系列的值时,它的打印效果与我在下面复制的内容完全相同,并且存在很多问题。我不确定如何比较不同的系列元素。
希望这是有道理的,感谢您的帮助!
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)
答案 0 :(得分:0)
对于这种字符串问题,列表理解通常比内置的pandas
字符串方法要快。您可以执行以下操作:
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