使用python更改CSV中的列值

Dav*_*vid 0 python csv row

让我们在输入的 CSV 文件中说明这一点。

在此处输入图片说明

我想查看该Babys列并将其更改为将数字增加 1。

我所做的是计算文件中有多少行,并对所有行运行 for 循环。但我不知道如何改变这些值

    v = open(input.csv)
    r=csv.reader(v)
    numline = len(v.readlines())
    print (numline)
    for row in r:
        if row["Baby"] == "Baby":
            for i in range (1, numline):
                print("test")
Run Code Online (Sandbox Code Playgroud)

Max*_*axU 7

使用pandas模块时可以很容易地完成

将熊猫导入为 pd

# read/parse CSV into pandas data frame
df = pd.read_csv('input.csv', delim_whitespace=True)
Run Code Online (Sandbox Code Playgroud)

输出:

In [33]: df
Out[33]:
  Name  Age  Babys
0  Avi   25      1
1  Dav   24      1
2  Ela   30      1
3  Ron   40      1
4  Shi   33      1
5  Leb   22      1
6  Moe   11      1
Run Code Online (Sandbox Code Playgroud)

有条件地增加Babys1

df.loc[(df.Name.isin(['Avi','Dav','Ron'])) & (df.Age < 33), 'Babys'] += 1
Run Code Online (Sandbox Code Playgroud)

输出:

In [35]: df
Out[35]:
  Name  Age  Babys
0  Avi   25      2
1  Dav   24      2
2  Ela   30      1
3  Ron   40      1
4  Shi   33      1
5  Leb   22      1
6  Moe   11      1
Run Code Online (Sandbox Code Playgroud)

所有行增加Babys列(无条件)1

df.Babys += 1
Run Code Online (Sandbox Code Playgroud)

输出:

In [43]: df
Out[43]:
  Name  Age  Babys
0  Avi   25      3
1  Dav   24      3
2  Ela   30      2
3  Ron   40      2
4  Shi   33      2
5  Leb   22      2
6  Moe   11      2
Run Code Online (Sandbox Code Playgroud)

最后将更改的 DF 保存回 CSV 文件:

df.to_csv('d:/temp/out.csv', index=False, sep=',')
Run Code Online (Sandbox Code Playgroud)

输出.csv:

Name,Age,Babys
Avi,25,3
Dav,24,3
Ela,30,2
Ron,40,2
Shi,33,2
Leb,22,2
Moe,11,2
Run Code Online (Sandbox Code Playgroud)