Pandas合并两个具有相同行数的数据集

时间:2017-12-05 13:53:24

标签: python pandas

我有两个具有相同行数的表(第二个表是通过处理T1内的文本从第一个表计算出来的)。我把它们都存储为pandas dataframe。 T2与T1没有共同列。这是一个例子,因为我的表非常庞大:

T1:
| name  | street  | city   |
|-------|---------|--------|
| David | street1 | Prague |
| John  | street2 | Berlin |
| Joe   | street3 | London |

T2:
| computed1 | computed2 |
|-----------|-----------|
| 0.5       | 0.3       |
| 0.2       | 0.8       |
| 0.1       | 0.6       |

Merged:
| name  | street  | city   | computed1 | computed2 |
|-------|---------|--------|-----------|-----------|
| David | street1 | Prague | 0.5       | 0.3       |
| John  | street2 | Berlin | 0.2       | 0.8       |
| Joe   | street3 | London | 0.1       | 0.6       |

我尝试了这些命令:

pd.concat([T1,T2])
pd.merge([T1,T2])
result=T1.join(T1)

使用concat和merge我只会得到第一个千元组合,其余部分用nan填充(我仔细检查两个是相同的大小),并且.join它没有组合它们,因为没有任何共同点。

有没有办法在pandas中组合这两个表?

由于

3 个答案:

答案 0 :(得分:5)

默认索引reset_index()之前需要concat

df = pd.concat([T1.reset_index(drop=True),T2.reset_index(drop=Tru‌​e)], axis=1)

答案 1 :(得分:0)

另一种方法是合并索引值:

df = T1.reset_index().merge(T2.reset_index(), left_index=True, right_index=True, how='left)

答案 2 :(得分:0)

我想补充一点,pd.concat只需提供轴作为列就可以完成您想要的事情。像这样:

pd.concat([T1,T2],axis=1)