保留其他数据框中包含的数据帧的值

时间:2015-11-16 16:24:40

标签: python string pandas dataframe

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

2 个答案:

答案 0 :(得分:1)

首先,您可以创建要匹配的字母的正则表达式

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,我会让你自己弄明白:-)

答案 1 :(得分:1)

第一列按功能portably forces output flushing on all implementations of awk转换为列表。

如果两个数据框中的{{1}}相同,您可以轻松地将列从{{1}}添加到另一个{。\ n}。

您可以从列表中转换str.split apply之差,然后转换为列表。您必须使用{{1}},因为将函数应用于每一行。

{{1}}