Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用现有数据在CSV文件中创建新列,然后将其用作打印排序列表的键_Python_Csv - Fatal编程技术网

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

Python 如何使用现有数据在CSV文件中创建新列,然后将其用作打印排序列表的键,python,csv,Python,Csv,对于作业,我需要从CSV文件中按日期顺序生成赌注列表。文件如下(示例): Aintree,红朗姆酒,2017,5,12,11.58,韩元 安特里,飓风飞行,2017,5,12,11.58,韩元 安特里,谋杀案,2017,5,12,5,失踪 艾尔,科比埃,2016,11,3,25,丢失 我想为CSV中的每一行创建一个新列,将[2]、[3]、[4]组合为'%d-%b-%y'。然后,我需要使用这个新列作为键来生成按日期顺序排列的赌注列表[5] 我在下面有这段代码,作为python的新手,我没有取得太

对于作业,我需要从CSV文件中按日期顺序生成赌注列表。文件如下(示例):

Aintree,红朗姆酒,2017,5,12,11.58,韩元
安特里,飓风飞行,2017,5,12,11.58,韩元
安特里,谋杀案,2017,5,12,5,失踪
艾尔,科比埃,2016,11,3,25,丢失
我想为CSV中的每一行创建一个新列,将
[2]、[3]、[4]
组合为
'%d-%b-%y'
。然后,我需要使用这个新列作为键来生成按日期顺序排列的赌注列表
[5]

我在下面有这段代码,作为python的新手,我没有取得太多成功,也不确定哪里出了问题。运行时会产生以下错误:

回溯(最近一次呼叫最后一次):
文件“date_bet.py”,第25行,在
获取日期()
文件“date\u bet.py”,第10行,在get\u date中
数据=列表(csv.reader(csvFile))
io.UnsupportedOperation:不可读
代码:


也许你应该考虑用它来达到你想要的。< /P> 我想为每一行组合,[4]创建一个新列,格式为“%d-%b-%y”

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



您可以使用方法将其保存到csv。

使用pandas。添加名为“date”的新列,并按新列对数据进行排序

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)

您似乎没有调用您的
get\u date
函数。很抱歉,这是一个愚蠢的错误。当我调用我得到这个错误时,回溯(最后一次调用):文件“date\u bet.py”,第25行,在get\u date()文件“date\u bet.py”,第10行,在get\u date data=list(csv.reader(csvFile))io中。不支持操作:不可读杰克:请在您的问题中回溯(并将缺少的调用添加到
get\u date()
)。您正在以模式
'a'
(不是读取模式)打开文件,然后尝试从中读取。如果我以模式'r'打开文件,是否需要通过模式'w'创建csv的一部分,然后才能创建新列?非常感谢,这非常有帮助。我对你的答案投了票,但它说我的声誉太低,无法公开改变它。
import pandas as pd
df = pd.read_csv(<your_file_name>, header=None)
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
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
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)