我使用pandas read_csv
从csv文件导入以下数据:
instrument type from_date to_date
0 96000001 W/D & V/L 19951227 19960102
1 96000002 DEED TRUST 19951227 19960102
2 96000003 WARNTY DEED 19951228 19960102
3 96000004 DEED TRUST 19951228 19960102
4 96000005 W/D & V/L 19951228 19960102
我想选择那些符合日期或日期范围的行。比如我想
只选择19951227
列中日期为from_date
的行,或选择from_date
19951227
到to_date
19960102
范围内的日期。< / p>
我该怎么做?
答案 0 :(得分:8)
选择具有特定列的那些:
In [11]: df[df['from_date'] == 19951227]
Out[11]:
instrument type from_date to_date
0 96000001 W/D & V/L 19951227 19960102
1 96000002 DEED TRUST 19951227 19960102
或组合多个查询(您可以使用|
或)
In [12]: df[(19951227 <= df['from_date']) & (df['to_date'] <= 19960102)]
Out[12]:
instrument type from_date to_date
0 96000001 W/D & V/L 19951227 19960102
1 96000002 DEED TRUST 19951227 19960102
2 96000003 WARNTY DEED 19951228 19960102
3 96000004 DEED TRUST 19951228 19960102
4 96000005 W/D & V/L 19951228 19960102
值得注意的是,这些列不是datetime / Timestamp对象......
要将这些列转换为您可以使用的时间戳:
In [21]: pd.to_datetime(df['from_date'].astype(str))
Out[21]:
0 1995-12-27 00:00:00
1 1995-12-27 00:00:00
2 1995-12-28 00:00:00
3 1995-12-28 00:00:00
4 1995-12-28 00:00:00
Name: from_date, dtype: datetime64[ns]
In [22]: df['from_date'] = pd.to_datetime(df['from_date'].astype(str))
In [23]: pd.to_datetime(df['from_date'].astype(str)) # do same for to_date
通过 string 表示日期:
In [24]: df['1995-12-27' == df['from_date']]
Out[24]:
instrument type from_date to_date
0 96000001 W/D & V/L 1995-12-27 00:00:00 19960102
1 96000002 DEED TRUST 1995-12-27 00:00:00 19960102