Phe*_*ndy 5 python datetime pandas
问题在第22行:
if start_date <= data_entries.iloc[j, 1] <= end_date:
我想比较正在访问熊猫数据帧列的start_date和end_date部分data_entries.iloc[j, 1]。我使用以下方式将列转换为日期时间:
data_entries['VOUCHER DATE'] = pd.to_datetime(data_entries['VOUCHER DATE'], format="%m/%d/%Y")
但是我不确定如何将其转换为日期。
import pandas as pd
import datetime
entries_csv = "C:\\Users\\Pops\\Desktop\\Entries.csv"
data_entries = pd.read_csv(entries_csv)
data_entries['VOUCHER DATE'] = pd.to_datetime(data_entries['VOUCHER DATE'], format="%m/%d/%Y")
start_date = datetime.date(2018, 4, 1)
end_date = datetime.date(2018, 10, 30)
for j in range(0, len(data_entries)):
if start_date <= data_entries.iloc[j, 1] <= end_date:
print('Hello')
Run Code Online (Sandbox Code Playgroud)
这将其转换为日期:
data_entries['VOUCHER DATE'] = pd.to_datetime(data_entries['VOUCHER DATE'], format="%m/%d/%Y").dt.date
Run Code Online (Sandbox Code Playgroud)
但是我不建议这样过滤。这快得多
data_entries[data_entries['VOUCHER DATE'].between(start_date, end_date)]
Run Code Online (Sandbox Code Playgroud)
阅读这篇文章
只需使用pd.Timestamp对象而无需任何转换:
start_date = pd.Timestamp('2018-04-01')
end_date = pd.Timestamp('2018-10-30')
res = data_entries[data_entries['VOUCHER DATE'].between(start_date, end_date)]
Run Code Online (Sandbox Code Playgroud)
说明
请勿在熊猫系列中使用datetime.datetime或datetime.date对象。这是低效的,因为您失去了矢量化功能。pd.Timestamp对象的好处是您可以利用矢量化功能进行计算。如上所述这里:
numpy.datetime64本质上是int64的薄包装。它几乎没有日期/时间特定的功能。
pd.Timestamp是围绕numpy.datetime64的包装。它由相同的int64值支持,但支持整个datetime.datetime接口以及有用的特定于熊猫的功能。
| 归档时间: |
|
| 查看次数: |
10991 次 |
| 最近记录: |