【问题标题】:filter dateframe by certain date按特定日期过滤数据框
【发布时间】:2021-01-16 13:11:03
【问题描述】:

我有一个包含德语格式日期的 csv 文件:

date,D11,D21,D31,D41
19.03.2018 00:00:00,6,4,6,2
19.03.2018 01:00:00,5,8,5,1
20.03.2018 00:00:00,2,2,3,0
20.03.2018 01:00:00,2,5,4,1
21.03.2018 00:00:00,3,7,8,3
21.03.2018 01:00:00,18,22,19,3
22.03.2018 00:00:00,32,69,47,10
22.03.2018 01:00:00,105,105,69,32
23.03.2018 00:00:00,117,134,106,57
23.03.2018 01:00:00,97,83,95,73

我想按特定日期获取行。为了得到这个输出:

date,D11,D21,D31,D41
21.03.2018 00:00:00,3,7,8,3
21.03.2018 01:00:00,18,22,19,3

我试过了:

import pandas as pd
from datetime import datetime
df = pd.read_csv('myData.csv')
df.loc[datetime.date(year=2018,month=3,day=21):datetime.date(year=2018,month=3,day=21)]

不幸的是,我收到了一个 TypeError:

TypeError: descriptor 'date' of 'datetime.datetime' object needs an argument

【问题讨论】:

    标签: python pandas csv datetime


    【解决方案1】:

    不要使用datetime 对象,它不能很好地与 Pandas 配合使用。你可以只使用字符串:

    # read csv
    df = pd.read_csv('myData.csv',
                     index_col=['date'], parse_dates=True)
    
    df.loc['2018-03-21':'2018-03-22']
    

    或者,如果您只想要日期为 2018-03-21 的行:

    df.loc['2018-03-21']
    

    输出:

                         D11  D21  D31  D41
    date                                   
    2018-03-21 00:00:00    3    7    8    3
    2018-03-21 01:00:00   18   22   19    3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-25
      • 2018-09-29
      • 2016-08-03
      • 1970-01-01
      • 2014-02-28
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多