使用python

时间:2016-05-26 06:27:12

标签: python csv row

在输入的CSV文件中说这个。

enter image description here

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

我所做的是计算文件中有多少行,并在所有行上运行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")

2 个答案:

答案 0 :(得分:4)

使用pandas模块

时,可以非常轻松地完成

将pandas导入为pd

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

输出:

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

有条件地按Babys

增加1
df.loc[(df.Name.isin(['Avi','Dav','Ron'])) & (df.Age < 33), 'Babys'] += 1

输出:

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
对于所有行(无条件地),

Babys列增加1

df.Babys += 1

输出:

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

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

df.to_csv('d:/temp/out.csv', index=False, sep=',')

out.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

答案 1 :(得分:1)

您可以使用python pandas将列号增加n

import pandas
data_df = pandas.read_csv('input.csv')
data_df = data_df['age'].apply(lambda x: x+n)
print data_df

1添加n替换1