我正在尝试创建一个带有大熊猫的数据框,并放置日期晚于201702。该数据框的结构是这样的
Date Account Number
1 2019-02-21 123841234
2 2017-01-01 193741927
3 2015-03-04 981237432
4 2018-05-29 134913473
5 2012-05-12 138749173
6 2009-01-04 174917239
我正在读取csv(data.csv),并尝试删除2017年2月28日之后的日期:
data_csv = pd.read_csv('data.csv')
data_csv[data_csv.DATE < '2017-02-28']
这是否应该正确使用YYYY-MM-DD的日期格式,还是我需要对列格式进行某些操作以确保这些行从数据框中删除?
谢谢您的时间。
答案 0 :(得分:2)
我建议您将字符串转换为Timestamp
,假设data_csv.Date
也是Timestamp
:
result = data_csv[data_csv.Date < pd.to_datetime('2017-02-28')]
print(result)
输出
Date Account Number
1 2017-01-01 193741927
2 2015-03-04 981237432
4 2012-05-12 138749173
5 2009-01-04 174917239
答案 1 :(得分:2)
如果您的日期字符串采用YYYY-MM-DD格式,则字典比较可以直接使用(通常适用于python,而不仅仅是熊猫)。
'2009-01-04' < '2017-02-28'
# True
'2019-01-04' < '2017-02-28'
# False
因此,您的比较应该没有任何变化。尽管先转换为日期时间会更安全,但是您的代码在仍能正常工作时不会做任何假设。
df.dtypes
Date object
Account Number int64
dtype: object
df[df['Date'] < '2017-02-28']
Date Account Number
2 2017-01-01 193741927
3 2015-03-04 981237432
5 2012-05-12 138749173
6 2009-01-04 174917239
df['Date'] = pd.to_datetime(df['Date'], errors='coerce')
df.dtypes
Date datetime64[ns]
Account Number int64
dtype: object
df[df['Date'] < '2017-02-28']
Date Account Number
2 2017-01-01 193741927
3 2015-03-04 981237432
5 2012-05-12 138749173
6 2009-01-04 174917239