python - 在 python 中使用 datetime 模块我需要按日期顺序对金额列进行排序
问题描述
我有一个跟踪投注的小 csv 文件,我需要在用户请求时按日期顺序生成投注。csv 样本如下所示,年 = [2],月 = [3],日 = [4]:
Aintree, Red Rum,2017,5,12,11.58, won
Aintree, Hurricane Fly,2017,5,12,11.58, won
Aintree, Murder,2017,5,12,5, lost
Ayr, Corbiere,2016,11,3,25, lost
(投注 = [5])
我找到了一种加入日期列的方法,但无法按日期顺序对其进行排序。
对于家庭作业,我不能使用 Pandas。请您帮我解决将新行转换为日期的问题。提前致谢。
import csv
from datetime import datetime
def get_date():
result=[]
with open('results.csv', 'r') as csvFilein:
reader = csv.reader(csvFilein)
with open('resultscopy.csv', 'w') as csvFileout:
writer = csv.writer(csvFileout)
rows = []
all = []
for rows in reader:
new_row = [''.join([rows[2], rows[3], rows[4]])] + rows[7:]
writer.writerows(all)
rows.append(all)
all.append(rows)
date = datetime.strptime(' 2017 01 11', '%Y %m %d')
result = str(new_row) + str(rows[5])
print(date)
csvFilein.close()
get_date()
解决方案
您可以将日期转换为datetime.datetime
对象,然后使用datetime
对象作为键进行排序:
import datetime, csv
data = [[*i[:2], datetime.datetime(*map(int, i[2:5])), *i[5:]] for i in csv.reader(open('test_csv.csv'))]
result = sorted(data, key=lambda x:x[2])
输出:
[['Ayr', ' Corbiere', datetime.datetime(2016, 11, 3, 0, 0), '25', ' lost'], ['Aintree', ' Red Rum', datetime.datetime(2017, 5, 12, 0, 0), '11.58', ' won'], ['Aintree', ' Hurricane Fly', datetime.datetime(2017, 5, 12, 0, 0), '11.58', ' won'], ['Aintree', ' Murder', datetime.datetime(2017, 5, 12, 0, 0), '5', ' lost']]
编辑:检索日期和金额:
new_data = [i[2:-1] for i in result]
输出:
[[datetime.datetime(2016, 11, 3, 0, 0), '25'], [datetime.datetime(2017, 5, 12, 0, 0), '11.58'], [datetime.datetime(2017, 5, 12, 0, 0), '11.58'], [datetime.datetime(2017, 5, 12, 0, 0), '5']]
编辑1:将结果格式化datetime
为字符串:
new_result = [[f'{a.day}/{a.month}/{a.year}', b] for a, b in new_data]
输出:
[['3/11/2016', '25'], ['12/5/2017', '11.58'], ['12/5/2017', '11.58'], ['12/5/2017', '5']]
推荐阅读
- php - 延长 Laravel Passport 中 oauth_access_token 的到期日期
- javascript - 滚动指示器 JavaScript 仅适用于 HTML 文档
- ruby-on-rails - 无法在控制台中获取 Rails 操作文本
- google-apps-script - 如何在 Google Script 中使用 indexOf 获取参考单元格后使用偏移量
- python - json.decoder.JSONDecodeError:期望','分隔符:第 1 行第 11 列(字符 10)
- javascript - 如何在javascript代码中包含脚本?
- excel - 将列的倍数数据从 xlsx 导入到 powershell cmd
- react-native - 如何坚持语言更改 react-i18next React-native
- java - 您发送给其他用户的消息不会显示在他们的 ChatsFragment 中。只显示给消息的发送者,不显示给接收者
- gnome - 卸载的 gnome 扩展不断重新出现