Pandas列绑定(cbind)两个数据帧

时间:2022-09-05 22:52:05

I've got a dataframe df_a with id information:

我有一个带有id信息的数据帧df_a:

    unique_id lacet_number 
15    5570613  TLA-0138365 
24    5025490  EMP-0138757 
36    4354431  DXN-0025343 

and another dataframe df_b, with the same number of rows that I know correspond to the rows in df_a:

和另一个数据帧df_b,我知道的行数与df_a中的行相对应:

     latitude  longitude 
0  -93.193560  31.217029  
1  -93.948082  35.360874  
2 -103.131508  37.787609  

What I want to do is simply cbind the two and get:

我想要做的只是简单地解决这两个问题并得到:

    unique_id lacet_number      latitude  longitude 
0     5570613  TLA-0138365    -93.193560  31.217029  
1     5025490  EMP-0138757    -93.948082  35.360874  
2     4354431  DXN-0025343   -103.131508  37.787609  

What I have tried:

我试过的:

df_c = pd.concat([df_a, df_b], axis=1)

which gives me an outer join.

这给了我一个外连接。

    unique_id lacet_number    latitude  longitude
0         NaN          NaN  -93.193560  31.217029
1         NaN          NaN  -93.948082  35.360874
2         NaN          NaN -103.131508  37.787609
15    5570613  TLA-0138365         NaN        NaN
24    5025490  EMP-0138757         NaN        NaN
36    4354431  DXN-0025343         NaN        NaN

The problem is that the indices for the two dataframes do not match. I read the documentation for pandas.concat, and saw that there is an option "ignore_index". But that only applies to the concatenation axis, in my case the columns and it certainly is not the right choice for me. So my question is: is there a simple way to achieve this?

问题是两个数据帧的索引不匹配。我阅读了pandas.concat的文档,发现有一个选项“ignore_index”。但这仅适用于连接轴,在我的情况下,列和它当然不适合我。所以我的问题是:有没有一种简单的方法来实现这一目标?

1 个解决方案

#1


46  

If you're sure the index row values are the same then to avoid the index alignment order then just call reset_index(), this will reset your index values back to start from 0:

如果您确定索引行值是相同的,那么为了避免索引对齐顺序然后只需调用reset_index(),这将重置索引值从0开始:

df_c = pd.concat([df_a.reset_index(drop=True), df_b], axis=1)

#1


46  

If you're sure the index row values are the same then to avoid the index alignment order then just call reset_index(), this will reset your index values back to start from 0:

如果您确定索引行值是相同的,那么为了避免索引对齐顺序然后只需调用reset_index(),这将重置索引值从0开始:

df_c = pd.concat([df_a.reset_index(drop=True), df_b], axis=1)