为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用现有数据在 CSV 文件中创建新列,然后将其用作打印排序列表的键

如何使用现有数据在 CSV 文件中创建新列,然后将其用作打印排序列表的键

莫回无 2022-01-05 20:05:33
对于作业,我需要从 CSV 文件中按日期顺序生成投注列表。文件如下(样本):Aintree, Red Rum,2017,5,12,11.58, wonAintree, Hurricane Fly,2017,5,12,11.58, wonAintree, Murder,2017,5,12,5, lostAyr, Corbiere,2016,11,3,25, lost我想为在 CSV 中[2],[3],[4]以格式组合的每一行创建一个新列'%d-%b-%y'。然后,我需要使用这个新列作为关键,以[5]按日期顺序生成投注列表。我在下面有这段代码,我是 python 的新手,我没有取得太大的成功,也不知道哪里出了问题。运行时会产生此错误:Traceback (most recent call last):  File "date_bet.py", line 25, in <module>    get_date()  File "date_bet.py", line 10, in get_date    data = list(csv.reader(csvFile))io.UnsupportedOperation: not readable代码:import csvfrom datetime import datetimedef get_date():    with open('results.csv', 'a') as csvFile:        writer = csv.writer(csvFile)        reader = csv.reader(csvFile)        all = []        data = list(csv.reader(csvFile))        row = next(csvFile)        row.append([7])        all.append(row)    for row in data:        row.append((data[4],data[3],data[2]), '%d-%b-%y')        all.append(row)    writer.writerows(all)    date = datetime.date(row[7], '%x')    print(row[5], key = date)get_date() 
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

也许您应该考虑使用熊猫来实现您想要的。


我想以'%d-%b-%y' 格式为结合2 , 3 ,[4] 的每一行创建一个新列


import pandas as pd

df = pd.read_csv(<your_file_name>, header=None)

使用pd.to_datetime函数添加列:


df['date'] = pd.to_datetime(dict(year=df[2], month=df[3], day=df[4]), format='%d-%b-%y')

df


    0           1                2      3   4   5       6           date

0   Aintree     Red Rum         2017    5   12  11.58   won     2017-05-12

1   Aintree     Hurricane Fly   2017    5   12  11.58   won     2017-05-12

2   Aintree     Murder          2017    5   12  5.00    lost    2017-05-12

3   Ayr         Corbiere        2016    11  3   25.00   lost    2016-11-03

然后,我需要使用这个新列作为关键,以按日期顺序生成投注列表 [5]。


df.sort_values('date', inplace=True)

print(df[[5, 'date']].reset_index(drop=True)) # reset index so that you don't see the mixedup index.


       5       date

0  25.00 2016-11-03

1  11.58 2017-05-12

2  11.58 2017-05-12

3   5.00 2017-05-12

您可以使用df.to_csv()方法将其保存到 csv 。


查看完整回答
反对 回复 2022-01-05
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

使用熊猫。添加名为“日期”的新列并按新列对数据进行排序。


import pandas as pd


df = pd.read_csv('55611308.csv', sep=',', names=['name0', 'name1', 'y', 'm', 'd', 'h', 'result'], header=None)

df['date'] = df['y'].astype(str).str.cat(df['m'].astype(str), sep='-').str.cat(df['d'].astype(str), sep='-')

df.sort_values('date',inplace=True)


print(df)


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信