如何使用Python减少整个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] -

我对编程非常陌生,所以请耐心等待

我从一个.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
  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)