我正在尝试加入(合并)两个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_number
,int64
的类型为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_C
和a_number
属于不同类型且未正确转换为b_number
?有人可以建议吗?谢谢!
答案 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'])