比方说,我有以下的Excel文件来读:大熊猫read_excel:NaN值强迫他人在同一列转换为浮动
我想是一个简单的解决方案(最好是单行),可以读取excel,以便将日期转换为str
(或至少int
),空白值为nan
或nat
或任何可由检测到的内容。
如果我使用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
所以公认的空白单元格为NaN
,这是很好的,但忌讳的是,所有其他值都被迫float64
,即使大熊猫他们意图仅仅是str
或int
s。 (编辑:似乎如果列,例如列[1]
,没有nan
s,那么其他值将不会被强制为float
。但在我的情况下,大多数列有delist_date
空白,因为大多数股票有一个IPO日期,但尚未摘牌。)
对于我所知道的,虽然,我试过dtype=str
关键字ARG,和它给了我
df
Out[10]:
001002.XY 600123.AB 123456.YZ 555555.GO
ipo_date 20100203 20150605 nan 20090501
delist_date nan 20170801 nan nan
看起来不错?确实,日期现在为str
,但有一点可笑的是,nan
现在变成了文字串!例如。
df.iloc[1, 0]
Out[12]:
'nan'
这将使我不得不添加一些奇怪的东西,如df.replace
稍后。
我没有尝试converters
,因为它需要逐列指定数据类型,而我正在使用的实际excel文件是一个很长的电子表格(大约3k列)。我不想在excel中转换电子表格。
任何人都可以帮忙吗?提前致谢。
我发现了类似的意外行为。我不知道埃弗特对我的问题[这里](https://stackoverflow.com/a/45814200/4799172)的出色答案给出了任何见解。 – roganjosh
@roganjosh谢谢我要检查出来。 – Vim
它绝对是一个切线,但我发现数据类型转换奇怪(从我的情况csv),所以也许它给你另一个角度。 – roganjosh