问题出在第22行:
find . -maxdepth 1 -type f -name "${dir}*" | xargs -n 1 -I{} mv {} "$dir"
我想将if start_date <= data_entries.iloc[j, 1] <= end_date:
和start_date
部分与end_date
进行比较,后者正在访问熊猫数据框的一列。我使用
data_entries.iloc[j, 1]
但是我不确定如何将其转换为 date 。
data_entries['VOUCHER DATE'] = pd.to_datetime(data_entries['VOUCHER DATE'], format="%m/%d/%Y")
答案 0 :(得分:5)
只需使用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)]
说明
请勿在Pandas系列中使用datetime.datetime
或datetime.date
对象。这是低效的,因为您失去了矢量化功能。 pd.Timestamp
对象的好处是您可以利用矢量化功能进行计算。如here所述:
numpy.datetime64
本质上是int64的精简包装。它有 几乎没有日期/时间专用功能。
pd.Timestamp
是numpy.datetime64的包装。它的支持 相同的int64值,但支持整个datetime.datetime
界面,以及有用的熊猫特有功能。
答案 1 :(得分:4)
这会将其转换为日期:
data_entries['VOUCHER DATE'] = pd.to_datetime(data_entries['VOUCHER DATE'], format="%m/%d/%Y").dt.date
但是我不建议这样过滤。 这要快得多
data_entries[data_entries['VOUCHER DATE'].between(start_date, end_date)]
阅读此article