2017-07-14 115 views
1

假设我有两个dataframes:熊猫合并两个dataframes具有相同的结构

x1 x2 x3 
y1 a1 a1 a1  
y2 b1 b1 b1  
y3 c1 c1 c1 

    x1 x2 x3 
y1 a2 a2 a2  
y2 b2 b2 b2  
y3 c2 c2 c2   

这是从同一个地方在得到以下数据框中每个元素的两个值的列表,最简单的方法原始数据框?

x1  x2  x3 
y1 [a1,a2] [a1,a2] [a1,a2]  
y2 [b1,b2] [b1,b2] [b1,b2]  
y3 [c1,c2] [c1,c2] [c1,c2] 

回答

3

使用applymap

In [953]: df1.applymap(lambda x: [x]) + df2.applymap(lambda x: [x]) 
Out[953]: 
      x1  x2  x3 
y1 [a1, a2] [a1, a2] [a1, a2] 
y2 [b1, b2] [b1, b2] [b1, b2] 
y3 [c1, c2] [c1, c2] [c1, c2] 
+0

谢谢,这似乎更灵活,可以应用于'reduce'。 – natsuapo

4

一(出许多)可能的解决方案:

In [63]: d1.astype(str).add(',').add(d2.astype(str)).apply(lambda x: x.str.split(',')) 
Out[63]: 
      x1  x2  x3 
y1 [a1, a2] [a1, a2] [a1, a2] 
y2 [b1, b2] [b1, b2] [b1, b2] 
y3 [c1, c2] [c1, c2] [c1, c2] 
+0

谢谢您的答复。它可以处理“int”或“float”类型吗? – natsuapo

+0

@natsuapo,我已经更新了我的答案 - 它会生成字符串列表 – MaxU