Python 熊猫:合并两个数据帧后如何防止科学记数法?
我想合并两个数据帧,但是,其中一列包含Python 熊猫:合并两个数据帧后如何防止科学记数法?,python,pandas,dataframe,Python,Pandas,Dataframe,我想合并两个数据帧,但是,其中一列包含nan,合并后,用科学记数法记录整型值。实际上,我只想得到它们的原始值。 输入: 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'
nan
,合并后,用科学记数法记录整型值。实际上,我只想得到它们的原始值。
输入:
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)
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
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
key other id
0 one 1 600608457536718336
1 two 2 -1
2 three 3 96436390593326400
输出:
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)
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
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
key other id
0 one 1 600608457536718336
1 two 2 -1
2 three 3 96436390593326400
期望值:
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)
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
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
key other id
0 one 1 600608457536718336
1 two 2 -1
2 three 3 96436390593326400
我尝试填充列id
,然后转换列的类型,但失败
我的尝试:
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)
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
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
key other id
0 one 1 600608457536718336
1 two 2 -1
2 three 3 96436390593326400
输出:
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)
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
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
right['id'].fillna(-1,inplace=True)
right['id']=right['id'].astype('int64')
total=pd.merge(left,right,on=['key'],how='left')
key other id
0 one 1 600608457536718336
1 two 2 -1
2 three 3 96436390593326400
希望能得到帮助!谢谢 你能试试用这个吗?也许它会起作用。基本上,在创建dataframe时,我将类型更改为str
import pandas as pd
import numpy as np
left=pd.DataFrame({'key':['one','two','three'],'other':[1,2,3]})
right=pd.DataFrame({'id':[str(600608457536718400),np.nan,str(96436390593326400)],'key':['one','two','three']})
total=pd.merge(left,right,on=['key'],how='left')
print(total)
这将产生以下输出
key other id
0 one 1 600608457536718400
1 two 2 NaN
2 three 3 96436390593326400
请参阅: