pandas read_excel:强制同一列中的其他人转换为float的nan值

时间:2017-11-11 06:16:27

标签: python excel pandas io nan

我们说我要读取以下Excel文件:

  

enter image description here

我想要的是是一个简单的解决方案(最好是单行),可以读取Excel,以便将日期转换为str(或至少int) ,空白值为nannatpd.isnull可以检测到的任何内容。

如果我使用df = pd.read_excel(file_path),我得到的是

df
Out[8]: 
              001002.XY  600123.AB  123456.YZ   555555.GO
ipo_date     20100203.0   20150605        NaN  20090501.0
delist_date         NaN   20170801        NaN         NaN

所以pandas将空白单元格识别为NaN,这很好,但令人不安的是,所有其他值都被迫float64,即使它们只是str }或int s。 (编辑:似乎如果列(例如列[1])没有nan s,则其他值不会被强制为{{1但是,在我的情况下,大多数列都有float空白,因为大多数股票都有一个ipo日期但尚未退市。)

据我所知,我尝试了delist_date关键字arg,它给了我

dtype=str

看起来不错?是的,日期现在是df Out[10]: 001002.XY 600123.AB 123456.YZ 555555.GO ipo_date 20100203 20150605 nan 20090501 delist_date nan 20170801 nan nan ,但有一点荒谬的是,str现在变成文字字符串了! E.g。

nan

这会让我不得不稍后添加一些奇怪的内容,例如df.iloc[1, 0] Out[12]: 'nan'

我没有尝试df.replace因为它需要逐列指定数据类型,而我正在使用的实际excel文件是一个非常长的电子表格(约3k列)。我也不想在excel中转​​置电子表格。

有人可以帮忙吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

使用dtype = object作为参数。

这里有很好的解释:pandas distinction between str and object types