根据日期从熊猫数据框中删除行

时间:2019-11-14 22:27:39

标签: python pandas dataframe

我正在尝试创建一个带有大熊猫的数据框,并放置日期晚于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的日期格式,还是我需要对列格式进行某些操作以确保这些行从数据框中删除?

谢谢您的时间。

2 个答案:

答案 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