pandas 空字符串与na区别_Pandas read_csv使用字符串'nan'填充空值,而不是解析日期...

这篇博客讨论了在使用Pandas读取CSV时遇到的空字符串与NA值的区别,特别是在解析日期时的问题。通过示例展示了如何将字符串'nan'转换为NaT(非时间标记),以便正确处理日期列中的缺失值。
摘要由CSDN通过智能技术生成

这是解析器中的一个小错误,请参阅:https://github.com/pydata/pandas/issues/3062

简单的解决方法是在读取后强制转换列(并使用NaT填充nans,这是非时间标记,相当于日期时间为nan)。这应该适用于0.10.1

In [22]: df

Out[22]:

value date id

0 2 2013-3-1 a

1 3 2013-3-1 b

2 4 2013-3-1 c

3 5 NaN d

4 6 2013-3-1 d

In [23]: df.dtypes

Out[23]:

value int64

date object

id object

dtype: object

In [24]: pd.to_datetime(df['date'])

Out[24]:

0 2013-03-01 00:00:00

1 2013-03-01 00:00:00

2 2013-03-01 00:00:00

3 NaT

4 2013-03-01 00:00:00

Name: date, dtype: datetime64[ns]如果您的数据中出现字符串'nan',则可以执行以下操作:

In [31]: s = Series(['2013-1-1','2013-1-1','nan','2013-1-1'])

In [32]: s

Out[32]:

0 2013-1-1

1 2013-1-1

2 nan

3 2013-1-1

dtype: object

In [39]: s[s=='nan'] = np.nan

In [40]: s

Out[40]:

0 2013-1-1

1 2013-1-1

2 NaN

3 2013-1-1

dtype: object

In [41]: pandas.to_datetime(s)

Out[41]:

0 2013-01-01 00:00:00

1 2013-01-01 00:00:00

2 NaT

3 2013-01-01 00:00:00

dtype: datetime64[ns]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值