Python Dataframe。在指定的日期范围内获取行?

问题描述 投票:0回答:1

我有一个 df 双列 nametime. 我想找到输入之间的行--。input1input2

input1 = pd.Period('4/21/2020') 
input2 = pd.Period('5/20/2020')

df

    raw_data = {
        'name': ['a', 'b', 'c', 'd','e','f','g','h','i'], 
        'time': ['2020-03-12','2020-03-16','2020-04-29','2020-03-16',
                 '2020-03-16','2020-04-16','2020-03-09','2020-05-19','2020-04-23']
   } 

    df = pd.DataFrame(raw_data, columns = ['name', 'time'])


           name        time
    0       a         2020-03-12
    1       b         2020-03-16
    2       c         2020-04-29
    3       d         2020-03-16
    4       e         2020-03-16
    5       f         2020-04-16
    6       g         2020-03-09
    7       h         2020-05-19
    8       i         2020-04-23

我的预期产出。

df

           name        time
    2       c         2020-04-29
    7       h         2020-05-19
    8       i         2020-04-23

我已经试过了,我有一个有两列名称和时间的df。

    df['time'] = pd.to_datetime(df['time'])
    df = df[df['time'].dt.to_period('d').isin([input1, input2])]
python pandas numpy
1个回答
2
投票

你的输入值是需要转换为时间戳的Periods。

df.loc[(df['time'] > input1.to_timestamp()) & (df['time'] < input2.to_timestamp())]



   name time
2   c   2020-04-29
7   h   2020-05-19
8   i   2020-04-23
© www.soinside.com 2019 - 2024. All rights reserved.