簡體   English   中英

如何使用Python對文本文件中的一行值求和

[英]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()函數僅接受字符串。

為此,您可以使用列表推導map函數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM