gpt4 book ai didi

python - 想读两列日期,但只得到一列

转载 作者:行者123 更新时间:2023-12-01 09:17:24 24 4
gpt4 key购买 nike

我有一个包含 6 列的 text.csv 文件。我希望将两列读入日期以供以后的差异使用。但是,我只得到一列作为日期时间返回。有任何想法吗?

另外,我有几个空日期返回nan NOT 0(零),如na_values = 0??

import pandas as pd
CSV = 'text.csv'
df = pd.read_csv(CSV,
skiprows = 0,
na_values = 0,
parse_dates = ['Date of Sign Up', 'Birth Date'],
usecols = ['Date of Sign Up', 'A', 'B', 'C', 'D', 'Birth Date'])

df.info() # Check info for column types and nan...

RangeIndex: 969 entries, 0 to 968
Data columns (total 6 columns):
Date of Sign Up 969 non-null datetime64[ns]
A 969 non-null object
B 969 non-null object
C 969 non-null object
D 969 non-null object
Birth Date 969 non-null object ## <== Why doesn't this column read as datetime?
dtypes: datetime64[ns](1), object(5)
memory usage: 45.5+ KB

最佳答案

存在问题,出生日期中的某些值至少包含一个不可解析的日期时间,因此read_csv默默地不解析列。

您可以通过以下方式检查该值:

dates = pd.to_datetime(df['Birth Date'], errors='coerce')

print (df.loc[dates.isnull(), 'Birth Date'])
<小时/>

另一个解决方案是将这个有问题的值解析为 NaT:

df['Birth Date'] = pd.to_datetime(df['Birth Date'], errors='coerce')

我尝试测试 0 是否正确解析为 NaT:

import pandas as pd

temp=u"""Date,a
2017-04-03,0
2017-04-04,1
0,2
2017-04-06,3
2017-04-07,4
2017-04-08,5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), na_values = 0, parse_dates=['Date'])

print (df)
Date a
0 2017-04-03 NaN
1 2017-04-04 1.0
2 NaT 2.0
3 2017-04-06 3.0
4 2017-04-07 4.0
5 2017-04-08 5.0

print (df.dtypes)

Date datetime64[ns]
a float64
dtype: object
<小时/>

如果有一些不可解析的值:

import pandas as pd

temp=u"""Date,a
2017-04-03,0
string,1
0,2
2017-04-06,3
2017-04-07,4
2017-04-08,5"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), na_values = [0, 'string'], parse_dates=['Date'])

print (df)
Date a
0 2017-04-03 NaN
1 NaT 1.0
2 NaT 2.0
3 2017-04-06 3.0
4 2017-04-07 4.0
5 2017-04-08 5.0

print (df.dtypes)
Date datetime64[ns]
a float64
dtype: object

关于python - 想读两列日期,但只得到一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117963/

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