2

假设我有两个数据框: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)

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

这个想法可以扩展到多个数据帧(超过 2 个)。Pandas 中是否有任何内容支持定义此类多数据帧运算符?

4

1 回答 1

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 ';'?

于 2013-04-13T00:39:08.773 回答