使用pandas读取excel时遇到的某整数列读出浮点数

平时最喜欢用pandas 读取excel,最近工作时遇到对于某列整数列的表格,总是把整数读出了浮点数,后面加个.0,但其实我不需要变为浮点数。

原因是:我这一列整数是由函数vlookup查找来的,没有查找到的是NA

办法是:把NA替换为-,就可以了

如果Excel表格中存在多行数字和多行汉字交叉的情况,可以使用Pandas库中的read_excel()函数进行读取。默认情况下,Pandas会将所有数字读取浮点数,将所有文本读取为字符串。 例如,如果我们有以下的Excel表格: | 1 | 2 | 3 | | --- | --- | --- | | 1 | A | 2 | | B | 2 | C | | 3 | D | 4 | 我们可以使用如下代码读取: ```python import pandas as pd df = pd.read_excel('data.xlsx') print(df) ``` 输出结果为: ``` 1 2 3 0 1 A 2 1 B 2 C 2 3 D 4 ``` 可以看到,Pandas将所有数字读取浮点数,将所有文本读取为字符串。 如果我们需要将数字文本分别读取出来,可以使用Pandas库中的converters参数来自定义换函数。例如,我们可以编写一个函数,将所有非数字字符替换为空字符串,然后将结果换为浮点数: ```python import pandas as pd def clean_number(x): if isinstance(x, str): x = x.replace(',', '') # 去掉逗号分隔符 x = ''.join(filter(str.isdigit, x)) # 只保留数字 return float(x) if x else None df = pd.read_excel('data.xlsx', converters={'1': clean_number, '3': clean_number}) print(df) ``` 输出结果为: ``` 1 2 3 0 1.0 A 2.0 1 NaN 2 NaN 2 3.0 D 4.0 ``` 以上代码中,我们使用了isinstance()函数来判断单元格中的值是否为字符串类型,然后使用replace()函数和filter()函数来去掉逗号分隔符和非数字字符。最后,我们将结果换为浮点数并返回。在read_excel()函数中,我们使用了converters参数来指定需要使用换函数,其中'1'和'3'是需要处理的的名称。这样,就可以将数字文本分别读取出来了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值