如何使用Python减少整个csv列-我做错了什么?
我对编程非常陌生,所以请耐心等待 我从一个.csv文件中读到如下内容:如何使用Python减少整个csv列-我做错了什么?,python,Python,我对编程非常陌生,所以请耐心等待 我从一个.csv文件中读到如下内容: 1, -2 2, 3 3, -6 4, 5 5, 7 等等。我在这里的目标,基本上就是删除第一行,然后将剩余的第一列减1,这样我就可以得到如下结果 1, 3 2, -6 3, 5 4, 7 5, *some randomly generated number* 以下是我到目前为止的情况: del data[0] for i in range(len(data)): newTime = data[i][0] -
1, -2
2, 3
3, -6
4, 5
5, 7
等等。我在这里的目标,基本上就是删除第一行,然后将剩余的第一列减1,这样我就可以得到如下结果
1, 3
2, -6
3, 5
4, 7
5, *some randomly generated number*
以下是我到目前为止的情况:
del data[0]
for i in range(len(data)):
newTime = data[i][0] - 1
oldNum = data[0][1]
data.insert(i, [newTime, oldNum])
然而,这只是取1,3并插入len(数据)次。。我做错了什么?请不要吝啬,我真的在努力学习
我用这个作为指导:,在我看来,这应该是可行的哈阿尔普
import random
data = [[1,2],
[2,4],
[3,-5],
[4,9],
[5,7]]
l = len(data)
for i in range(l-1):
data[i][1] = data[i+1][1]
data[l-1][1] = random.randint(-3,3)
print(data)
输出:
[[1, 4],
[2, -5],
[3, 9],
[4, 7],
[5, 0]]
在评论发布的代码时,我不明白为什么它会使用csv库读取文件中的所有行,然后使用较低级别的方法拆分这些行。做得太多会导致错误,即使是专家。让库或框架尽可能多地为您服务,并使您自己的代码合理地简短 一个现代化的数据库是,其中包括 下面是如何读取一个列为“name”的csvfile,将文件数据名>=2子集,从名称中减去一个,然后将其写回 测试如下所示
import pandas as pd
import random
DIN = pd.read_csv("csvfile.csv")
DOUT = DIN[DIN['name']>=2]
DOUT['name']=DOUT['name']-1
DOUT = pd.concat([DOUT, pd.DataFrame({'name': DOUT['name'].tail(1)+1, 'value': int(random.random()*100)})])
DOUT.to_csv("newcsvfile.csv", index=False)
在
出去
使用内置的
csv
模块,这很简单。诀窍是在减少数据量之前,先将输入的数据(字符串)转换成数字
import csv
from random import randrange
with open('data.csv') as inf, open('out.csv','w') as out:
reader = csv.reader(inf)
writer = csv.writer(out, delimiter=',')
writer.writerow(next(reader)) # read the first line and write it
# to the output file
next(reader) # skips the first row
rows = list(reader) # grab all the rows
for row in rows:
row[0] = int(row[0])-1 # reduce the first number for all
# rows
# Set the last row to a random number
rows.append([max(row[0] for rows in row)+1,randrange(10)])
writer.writerows(rows)
你能提供读取csv的代码吗?让测试更容易我加上了,对不起,我曾经这么做过,有人对我大喊大叫。。但你看,当我运行它的时候,它根本没有任何作用/@丽塔是你的
数据的结构
就像我发布的那样吗?我的坏。。。我有一条本不该在那里的线,现在还在那里。谢谢并增加随机值row@rickhg12hs在熊猫中添加行有点痛苦,但可行。。。最后一行呢?别忘了附加恼人的随机值行。最后一行需要附加在这里,不是吗?
name,value
1,2
2,3
3,4
4,5
5,4
6,3
7,2
8,1
9,76
import csv
from random import randrange
with open('data.csv') as inf, open('out.csv','w') as out:
reader = csv.reader(inf)
writer = csv.writer(out, delimiter=',')
writer.writerow(next(reader)) # read the first line and write it
# to the output file
next(reader) # skips the first row
rows = list(reader) # grab all the rows
for row in rows:
row[0] = int(row[0])-1 # reduce the first number for all
# rows
# Set the last row to a random number
rows.append([max(row[0] for rows in row)+1,randrange(10)])
writer.writerows(rows)