pandas:在不同类型的列上加入两个数据帧

时间:2017-04-04 00:04:36

标签: python-3.x pandas join merge

我正在尝试加入(合并)两个pandas数据框:@Singleton @Lock(LockType.WRITE) // WRITE is default, but here for emphasis public class SingletonBean { @Resource private SessionContext sessionContext; @Schedule(second="*/3", minute="*", hour="*") public void test_automatic_timer() throws InterruptedException { System.out.println("test_automatic_timer()"); sessionContext.getBusinessObject(StatelessSessionBean.class).test(); } @Transactional(REQUIRES_NEW) public void test() { System.out.println("test()"); } } df_A。我想加入df_B

但是,df_A.a_number = df_B.b_number的类型为df_A.a_numberint64的类型为df_B.b_number。我尝试在合并之前将它们转换为object,如下所示,但似乎不起作用......

str

这是df_B:

df_A.a_number.astype('str')
df_A.dtypes

a_number       int64
a_set    object
dtype: object

然后我尝试加入df_A和df_B:

df_B.b_number.astype('str')
df_B.dtypes

b_number    object
dtype: object

但是,df_C = pd.merge(df_A,df_B, how ='inner', left_on = ['a_number'], right_on = ['b_number']) df_C 为空(不应该是)。我猜可能是因为df_Ca_number属于不同类型且未正确转换为b_number?有人可以建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

尝试将df_A.a_number保留为Int64,并将df_B.b_number中的密钥转换为Int64

df_B.b_number.astype('int')
df_C = pd.merge(df_A,df_B, how ='inner', left_on = ['a_number'], right_on = ['b_number'])
相关问题