I want to merge two dataframes, however, one column contains nan, and after merging, the integer type values are recorded by scientific notation. Actual, I just want to get their original values.
Input:
import pandas as pd 
import numpy as np 
left=pd.DataFrame({'key':['one','two','three'],'other':[1,2,3]})
right=pd.DataFrame({'id':[600608457536718400,np.nan,96436390593326400],'key':['one','two','three']})
total=pd.merge(left,right,on=['key'],how='left')
print(left)
print(right)
print(total)
Output:
     key  other
0    one      1
1    two      2
2  three      3
             id    key
0  6.006085e+17    one
1           NaN    two
2  9.643639e+16  three
     key  other            id
0    one      1  6.006085e+17
1    two      2           NaN
2  three      3  9.643639e+16
Expected:
     key  other            id
0    one      1  600608457536718400
1    two      2           NaN
2  three      3  96436390593326400
I try to fillna the column id and then convert the type of the column, but failed.
What I try:
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
Output:
     key  other                  id
0    one      1  600608457536718336
1    two      2                  -1
2  three      3   96436390593326400
Hopefully for help! Thanks!
