Python merge()数据类型改变

Python merge()操作导致数据类型转换
在Python项目中使用pandas的merge()函数时,遇到了数据类型改变的问题。详细描述了该问题及其解决过程。

项目场景:Python merge()过程中出现数据类型更改?

问题描述及解决流程

import pandas as pd
# 举个例子可能会更清楚点
a = pd.DataFrame([['1','bob','27',],['2','danny','17'],['3','jamse','38']],columns = ['id','name','age'])
b = pd.DataFrame([['1','48'],['3','59'],['4','78'],['2','84'],['5','49']],columns =['id','score'])
# 上面很明显我们取的全是str类型的数据
d = b.merge(a,how = 'left',on = 'id')
'''
######下面是合并后的d#######
  id score   name  age
0  1    48    bob   27
1  3    59  jamse   38
2  4    78    NaN  NaN
3  2    84  danny   17
4  5    49    NaN  NaN
'''
# 接下来就是见证奇迹的时候
# 打印一下d的数据类型
for i in d.columns:
	print(i,'数据类型是:',type(d[i].iloc[0]))
'''
#######结果发现并没有什么问题?搞错了?#############
id 数据类型是: <class 'str'>
score 数据类型是: <class 'str'>
name 数据类型是: <class 'str'>
age 数据类型是: <class 'str'>
'''
# 再来
for i in d.columns:
	print(i,'数据类型是:',type(d[i].iloc[2]))
'''
######哈哈哈,变了吧#######
id 数据类型是: <class 'str'>
score 数据类型是: <class 'str'>
name 数据类型是: <class 'float'>
age 数据类型是: <class 'float'>
'''
# 有什么疑惑?再看?
for i in d.columns:
	print(i,'数据类型是:',d[i].dtypes)
'''
######查看每一列的整体类型都是object######
id 数据类型是: object
score 数据类型是: object
name 数据类型是: object
age 数据类型是: object
'''
# 分析下原因,Pandas 在不指定的情况下会把nan识别为float
# 这个时候因为其中有str类型,又有float类型,为了统一每一列的数据类型就把它升级到共同父类型object了


评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值