为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas.read_excel有时错误地将布尔值读取为1/0

Pandas.read_excel有时错误地将布尔值读取为1/0

阿波罗的战车 2021-05-04 13:53:27
我需要将一个非常大的Excel文件读入DataFrame。该文件包含字符串,整数,浮点数和布尔数据,以及丢失的数据和完全空的行。值得注意的是,某些单元格值是从单元格公式和/或VBA导出的-尽管从理论上讲这不会影响任何内容。如标题所示,pandas有时将布尔值读取为float或int 1和0,而不是True和False。它似乎与空行的数量和其他数据的类型有关。为了简单起见,我只链接一个复制问题的2页Excel文件。 Boolean_1.xlsx这是代码:import pandas as pddf1 = pd.read_excel('Boolean_1.xlsx','Sheet1')df2 = pd.read_excel('Boolean_1.xlsx','Sheet2')print(df1, '\n' *2, df2)这是印刷品。主要注意行ZBA,该行在两个工作表中具有相同的值,但在DataFrames中具有不同的值:  Name stuff  Unnamed: 1 Unnamed: 2 Unnamed: 30         AFD          a        dsf        ads1         DFA          1          2          32         DFD      123.3       41.1       13.73        IIOP        why        why        why4         NaN        NaN        NaN        NaN5         ZBA      False      False       True    Name adslfa  Unnamed: 1  Unnamed: 2  Unnamed: 30        asdf         6.0         3.0         6.01         NaN         NaN         NaN         NaN2         NaN         NaN         NaN         NaN3         NaN         NaN         NaN         NaN4         NaN         NaN         NaN         NaN5         ZBA         0.0         0.0         1.0我还能够在我实际上正在处理的大文件中(是)获得整数1和0的输出,但是无法轻松地复制它。是什么原因导致这种不一致,有没有办法强迫熊猫读取应该读取的布尔值?
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

Read_excel将基于具有值的列的第一行来确定每列的dtype。如果该列的第一行为空,则Read_excel将继续到下一行,直到找到一个值。

在Sheet1中,具有B,C和D列中的值的第一行包含字符串。因此,所有后续行将被视为这些列的字符串。在这种情况下,FALSE = False

在Sheet2中,具有B,C和D列中的值的第一行包含整数。因此,所有后续行将被视为这些列的整数。在这种情况下,FALSE = 0。


查看完整回答
反对 回复 2021-05-18
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信