[英]How to sum a row of values from a text file using Python
我在文本文件中有几行值,如下所示:
2,3,4,2
4,5,6,3
2,3,4,1
我希望能够将它们汇总成行:
例如,
row1 = 11
row2 = 18
row3 = 10
我试图将所有行添加到多维数组中,但是遇到了困难。 我已经尝试过以下代码:
allVotes=[]
fo=open('Votes.txt','r')
for line in fo:
line=line.strip()
parts=line.split(',')
eachLine=int(line)
allVotes.append(eachLine)
print(allVotes)
但是,每一行都不是整数。 还有其他解决方法吗?
您不能通过在该列表上进行int()调用将字符串列表转换为整数列表,您需要分别转换每个值,因为int()函数仅接受字符串。
# List comprehension
eachLine = [int(s) for s in line]
# using map function
eachLine = list(map(int, line))
您可以在这些列表上调用sum()以获取总和。 因此,您可以通过以下代码获得结果:
fo=open('Votes.txt','r')
for line in fo:
vote_sums = sum([int(s) for s in line.strip().split(',')])
print(vote_sums)
试试这个:
fo=open('rank.txt','r')
for line in fo:
l=list(map(int,line.split(",")))
sm=sum(l[0:len(l)])
print (sm)
sum(map(lambda x: int(x), raw_input().split(',')))
要将其放入二维数组中,请尝试以下操作
all_values = []
with open('Votes.txt', 'rt') as file:
for line in file:
line = list(map(int, string.split(",")))
all_values.append(line)
或者,您可以执行类似的操作以获取一维数组中每一行的总和。
def get_results(filename):
def sum_line(line):
return sum(map(int, line.split(",")))
with open(filename, 'rt') as file:
return [sum_line(line) for line in file]
使用熊猫,我们可以在单行操作中做到这一点。
s = u"""2,3,4,2
4,5,6,3
2,3,4,1"""
import io
import pandas as pd
l = pd.read_csv(io.StringIO(s),header=None).sum(axis=1).tolist()
#l = pd.read_csv("path/to/file.csv",header=None).sum(axis=1).tolist()
l返回:
[11, 18, 10]
使用大熊猫,我们还可以导出到字典:
df = pd.read_csv(io.StringIO(s),header=None).sum(axis=1)
df.index = ("row {}".format(i+1) for i in range(len(df)))
d = df.to_dict()
d返回
{'row 1': 11, 'row 2': 18, 'row 3': 10}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.