我有 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/

10-12 17:45
查看更多