定义处理多个数据帧的运算符

时间:2013-04-12 23:42:07

标签: python pandas

假设我有两个数据框:pd1pd2

pd1 = 
       A      B      C
1  hello    foo  hello
2    foo    bar  hello
3  world    bar  world
4  world    bar  world

pd2 = 

   A  B  C
1  8  0  3
2  8  5  2
3  4  7  0
4  4  1  3

并说我想做一些事情,比如使用以下结果创建第三个数据框

       A         B      C
1  hello;8    foo;0  hello;3
2    foo;8    bar;5  hello;2
3  world;4    bar;7  world;2
4  world;4    bar;1  world;0

虽然我可以遍历每个位置,索引两个数据帧并将结果连接到第三个数据帧,但我想知道我是否可以做得更好。

阅读applymap我想知道是否有类似的方法来定义和应用处理数据帧对的运算符。例如,对于上面的问题,我可以定义以下运算符:

def f(x,y):    
    return str(x)  + ';' + str(y)

其中f(x,y)是一个按元素操作的函数。

这个想法可以扩展到多个数据帧(超过2个)。 Pandas中有什么东西支持这种多数据帧操作符的定义吗?

1 个答案:

答案 0 :(得分:1)

您已经可以执行此操作,只需使用applymap进行字符串化; '+'连接

In [14]: df1.applymap(str) + df2.applymap(lambda x: ';%s' % x)
Out[14]: 
     A
0  0;0
1  1;2
2  2;4
3  3;6
4  4;8

问题效率不是很高,也许你应该创建你想要的列然后to_csv与sep为';'?