gpt4 book ai didi

python - 使用空值处理解析 pandas.read_csv 中的日期?

转载 作者:太空狗 更新时间:2023-10-30 00:29:03 24 4
gpt4 key购买 nike

考虑以下虚构的 CSV:

from io import StringIO

data = """value,date
7,null
7,10/18/2008
621,(null)"""

fake_file = StringIO(data)

我想使用 pandas.read_csv 读取此文件,使用 na_values 参数处理空值,使用 parse_datesdate_parser 处理日期:

import pandas as pd

date_parser = lambda c: pd.datetime.strptime(c, '%m/%d/%Y')

df = pd.read_csv(fake_file,
parse_dates=['date'],
date_parser=date_parser,
na_values=['null', '(null)'])

在 Python 3.5 中运行这段代码会得到:

  File "<ipython-input-11-aa5bcf0858b7>", line 1, in <lambda>
date_parser = lambda c: pd.datetime.strptime(c, DATE_FMT)

TypeError: strptime() argument 1 must be str, not float

所以似乎首先处理了空值,然后尝试解析日期...

我知道我可以做到:

df = pd.read_csv(fake_file,
na_values=['null', '(null)'])
df['date'] = pd.to_datetime(df['date'],
format='%m/%d/%Y')

但我真正的问题是如何同时处理日期格式和 NaN - 一次性处理......

最佳答案

使用to_datetime使用 formaterrors='coerce':

date_parser = lambda c: pd.to_datetime(c, format='%m/%d/%Y', errors='coerce')
df = pd.read_csv(fake_file, parse_dates=['date'], date_parser=date_parser)
print (df)
value date
0 7 NaT
1 7 2008-10-18
2 621 NaT

关于python - 使用空值处理解析 pandas.read_csv 中的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46545590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com