使用Python给列添加数字

4
我是一名新手程序员,需要一些关于Python方面的指导。我有一个包含8个列和500万行数据的文本文件,我想要在第四列的每个数值上加15。
例如:
  10  21  34  12  50  111  234  21  7
  21  10  23  56  80   90  221  78 90

将被改为:

  10  21  34  12  **65**  111  234  21  7
  21  10  23  56  **95**   90  221  78 90

以下是我的脚本,它能让我隔离出该列,但当我尝试添加任何数量时,返回"TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'"。

file = open("file.txt")
column = []

for line in file:
    column.append(int(line.split("\t")[3]))

print column

任何建议都会很棒。

你确定这些行是按制表符分隔的吗?另外,你可能想对这行使用rstrip()函数,以去除末尾的换行符。 - Igglyboo
是的,这些行是制表符分隔的,我包含的内容代表了数据。 - sheaph
这对我来说很好用,你确定你的file.txt格式正确吗? - Igglyboo
在添加任何内容之前,请执行print line.split("\t")[3]。另外,请显示出现错误的行。最后,如果要更改第五列,为什么使用[3] - Tim Pietzcker
1
顺便提一下:如果计算量很大,我会考虑使用Pandas! - Ravi Yenugu
2个回答

2

尝试以下代码,可以让你开始学习 -- 当然使用库有更好的方法,但这将向你展示一些更好的文件处理基本方法。只要文件中的分隔符是双空格(" ")并且所有内容都可以转换为整数,此方法适用于你发布的数据。如果不行......

另外,请注意脚本正确的启动方式:

if __name__ == "__main__":

这是因为如果你正在制作一个库,通常不希望任何代码执行...
__author__ = 'charlie'

in_filename = "in_file.txt"
out_filename = "out_file.txt"
delimiter = "  "

def main():

    with open(in_filename, "r") as infile:
        with open(out_filename, "w") as outfile:
            for line in infile:

                ldata = line.split(delimiter)

                ldata[4] = str(int(ldata[4]) + 15)

                outfile.write(delimiter.join(ldata))


if __name__ == "__main__":
    main()

1
使用csvparser读取文件,分隔符设置为\t。 - Shaun
正如@Shaun所说 - 你也可以使用csvparser或其他库来完成。不过我想你可能正在寻找一个“原始”的Python示例。 - Transact Charlie

1
使用Pandas:
import pandas as pd

df = pd.read_clipboard(header=None)
df[4] += 15

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接