我使用pandas从csv文件导入以下数据read_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
Run Code Online (Sandbox Code Playgroud)
我想选择那些符合日期或日期范围的行.比如我想用日期,只选择那些排19951227
在from_date
列或选择天,范围从from_date
的19951227
到to_date
19960102
.
我该怎么做?
选择具有特定列的那些:
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
Run Code Online (Sandbox Code Playgroud)
或组合几个查询(您可以使用|
或)
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
Run Code Online (Sandbox Code Playgroud)
值得注意的是,这些列不是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
Run Code Online (Sandbox Code Playgroud)
并通过字符串表示日期查询:
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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6476 次 |
最近记录: |