我有 2 个包含列表的数据帧,我想保留第二个数据帧中包含的第一个数据帧的元素。有可能还是我必须尝试其他一些数据结构?
输入示例:
df1:
elem1
a,c,v,b,n
b
c,x,a
df2:
elem2
j,k,a,i,v
o,b
g,f,w
预期输出:
elem
a,v
b
NaN
最佳答案
所以首先你可以创建一个你想要匹配的字母的正则表达式
In [77]:
chars = df2.elem2.str.replace(',' , '|')
chars
Out[77]:
0 j|k|a|i|v
1 o|b
2 g|f|w
Name: elem2, dtype: object
将两者连接成一个数据框,以便稍后执行自定义功能
In [24]:
to_compare = pd.concat([df1 , chars] , axis = 1)
to_compare
Out[24]:
elem1 elem2
0 a,c,v,b,n j|k|a|i|v
1 b o|b
2 c,x,a g|f|w
最后使用正则表达式匹配
elem1
中的日期In [76]:
to_compare.apply( lambda x : ','.join(re.findall(x['elem2'] , x['elem1'])) , axis = 1)
Out[76]:
0 a,v
1 b
2
dtype: object
如果你想将空字符串从最终结果转换为
NAN
,我会让你自己弄清楚:-)关于python - 保留包含在其他数据帧中的数据帧的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33740040/