python读取excel数字数据是object类型_pandas 读取excel表格的数据,数据格式从float莫名变object,导致计算失败...

在使用pandas读取Excel表格时遇到数据类型错误,某列原本应为float的数据变为object,导致计算失败。通过`data_coal.info()`和`data_coal.select_dtypes(exclude=['float'])`定位问题,发现数据类型为'O'。解决方法是通过循环检查并使用正则表达式`re.sub`进行数据修正,确保所有数据为float类型。
摘要由CSDN通过智能技术生成

问题描述

在读取excel表格的数据进行计算和二次函数拟合的时候,发生的错误。

错误提示如下:

TypeError: can't multiply sequence by non-int of type 'float'

由于是很大的表格,经过分析发现有一列的数据类型不是float,而是object:

分析出错原因

查找出错数据:

data_coal.info()

data_coal.select_dtypes(exclude=['float'])

data_coal["修正后负荷(MW)"].dtype

dtype('O')中的O代表object

pandas中的某一列如data_coal["修正后负荷(MW)"]是一个series类型,没有找到series里直接判断不同数据类型的现成方法或函数。

解决办法:

自己用python的type功能和pandas的series自带功能写了一个小循环解决此问题:

1、找到坏数据

for i in range(data_coal["修正后负荷(MW)"].size):

if data_coal["修正后负荷(MW)"].str.isnumeric()[i] == False:

print(i)

###################################

在使用pandas读取Excel文件时,如果数据包含NaN值,并且这些NaN值的数据类型float,可以通过以下几种方法处理这些NaN值为空: 1. 使用`fillna()`函数: 可以使用`fillna()`函数将NaN值替换为空字符串或其他指定的值。例如: ```python import pandas as pd df = pd.read_excel('file.xlsx') df = df.fillna('') ``` 这将会把DataFrame所有的NaN值替换为空字符串。 2. 使用`replace()`函数: 也可以使用`replace()`函数来替换NaN值。例如: ```python df = df.replace({np.nan: ''}) ``` 这同样会将所有的NaN值替换为空字符串。 3. 在读取Excel时直接处理: 在调用`read_excel()`函数时,可以使用参数`na_values`来指定哪些值应该被视为NaN,然后结合`keep_default_na=False`来确保这些值被正确识别和处理。例如: ```python df = pd.read_excel('file.xlsx', na_values=['NA'], keep_default_na=False) df = df.fillna('') ``` 这样,在读取Excel文件时就将'NA'视为NaN,并在之后将其替换为空字符串。 4. 转换数据类型: 如果需要将整个列的数据类型float转换为object(字符串),可以先将NaN值填充为空字符串,然后再转换数据类型。例如: ```python df['column'] = df['column'].fillna('').astype(str) ``` 这会将指定列的NaN值替换为空字符串,并将该列的数据类型转换为字符串。 以上方法可以根据具体需求选择使用,以达到将Excel的NaN值处理为空的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值