Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python的特定列中添加所有值_Python - Fatal编程技术网

在Python的特定列中添加所有值

在Python的特定列中添加所有值,python,Python,我用树莓圆周率收集天气数据,它做得很好。 所有收集的数据将保存到逗号分隔的txt文件中 现在我希望从收集的数据中得到平均温度,因此我需要将某一列的所有条目相加 这是收集的数据的一部分,第二列或索引[1]是捕获的临时数据: 00:00,1.5,1025,100,1.5,Yes 01:00,2.0,1025,100,2.0,Yes 02:00,2.5,1025,100,2.5,Yes 03:00,2.7,1025,100,2.7,Yes 04:00,2.8,1025,100,2.8,Yes 05:0

我用树莓圆周率收集天气数据,它做得很好。 所有收集的数据将保存到逗号分隔的txt文件中

现在我希望从收集的数据中得到平均温度,因此我需要将某一列的所有条目相加

这是收集的数据的一部分,第二列或索引[1]是捕获的临时数据:

00:00,1.5,1025,100,1.5,Yes
01:00,2.0,1025,100,2.0,Yes
02:00,2.5,1025,100,2.5,Yes
03:00,2.7,1025,100,2.7,Yes
04:00,2.8,1025,100,2.8,Yes
05:00,3.0,1025,100,3.0,Yes
06:00,3.7,1025,100,3.7,Yes
07:00,4.1,1024,100,4.1,Yes
08:00,4.2,1025,100,4.2,Yes
09:00,4.6,1026,100,4.6,Yes
10:00,5.9,1026,100,5.9,Yes
11:00,6.3,1026,100,6.3,Yes
12:00,6.8,1026,100,6.8,Yes
13:00,7.9,1026,100,7.9,Yes
14:00,8.1,1026,100,8.1,Yes
15:00,7.8,1026,100,7.8,Yes
16:00,6.8,1026,100,6.8,Yes
17:00,5.8,1027,100,5.8,Yes
18:00,5.0,1027,100,5.0,Yes
19:00,4.7,1028,100,4.7,Yes
20:00,4.0,1028,100,4.0,Yes
21:00,3.7,1028,100,3.7,Yes
22:00,3.5,1028,100,3.5,Yes
23:00,4.0,1029,100,4.0,Yes
23:59,2.8,1029,100,2.8,Yes
下面是我一直试图用来获取平均温度的示例代码,但它一直抛出一个错误:

#Adding all values in a columns
AvTemp = 0
with open(YdPath + yFileDate + '.txt', 'r') as AvgTemp:
    for line in AvgTemp:
        line = line.strip().split(',')
        AvTemp += sum(int(line[1]))
        print AvTemp
以下是错误:

AvTemp += sum(int(line[1])/25)
ValueError: invalid literal for int() with base 10: '1.5'
因此,我可以看到,作为小数的条目会导致错误,因为它不是整数,但即使删除
int
部分,我仍然会得到另一个错误

任何帮助都将不胜感激

谢谢

尝试各种技巧后更新

在尝试了各种提示和答案后,我仍然没有得到所需的结果。 基本上,我只需要打印实际的最终结果,即
索引[1]
的总数等于114.2,然后除以行数
len
,在本例中为25,结果为4.568

使用这些不同的帮助提示,以下是当前打印到屏幕上的内容:

1.5
3.5
6.0
8.7
11.5
14.5
18.2
22.3
26.5
31.1
37.0
43.3
50.1
58.0
66.1
73.9
80.7
86.5
91.5
96.2
100.2
103.9
107.4
111.4
114.2
您可以看到,它不断打印出每一行,加上最后一行,最后的总数为114.2。(我这里省略了除法部分)。 我真的不想把其他所有的行都打印出来。
我想这可能是某个地方需要的
中断

将其转换为
浮动
,例如:

for line in AvgTemp:
    line = line.strip().split(',')
    AvTemp += sum(float(line[1]))
print AvTemp
您可以将值附加到列表中,然后进行求和,如下所示:

tot = []
for line in AvgTemp:
    line = line.strip().split(',')
    value = float(line[1])
    tot.append(value)
#sum values
total = sum(tot)

将其强制转换为浮动,如:

for line in AvgTemp:
    line = line.strip().split(',')
    AvTemp += sum(float(line[1]))
print AvTemp
您可以将值附加到列表中,然后进行求和,如下所示:

tot = []
for line in AvgTemp:
    line = line.strip().split(',')
    value = float(line[1])
    tot.append(value)
#sum values
total = sum(tot)

第[1]行是一个单值,总和(int(第[1]行))没有意义。 替换

AvTemp += sum(int(line[1]))

这应该给你总数,然后你可以平均它

完整的代码是:

with open(YdPath + yFileDate + '.txt', 'r') as AvgTemp:
    for line in AvgTemp:
        line = line.strip().split(',')
        AvTemp += float(line[1])
print AvTemp

你也可以试着看看这个问题:

行[1]是一个单一的值,总和(int(行[1])没有意义。 替换

AvTemp += sum(int(line[1]))

这应该给你总数,然后你可以平均它

完整的代码是:

with open(YdPath + yFileDate + '.txt', 'r') as AvgTemp:
    for line in AvgTemp:
        line = line.strip().split(',')
        AvTemp += float(line[1])
print AvTemp

您还可以尝试查看此问题:

try
AvTemp+=sum(float(第[1]行))
try
AvTemp+=sum(float(第[1]行))的可能重复项。
此代码的可能重复项给出错误:AvTemp+=sum(float(第[1]行))TypeError:“float”对象不是iterableThanks,但它仍然累计打印每个值,即打印的每个条目是当前行与列中所有前几行的相加,使用我发布的数据显示的输出是:
1.5 3.5 6.0 8.7 11.5 14.5 18.2 22.3 26.5 31.1 37.0 43.3 50.1 58.0 66.1 73.980.7 86.5 91.5 96.2 100.2 103.9 107.4 111.4 114.2
@1cm69您正在打印内部for loop,因此这样的输出,最后打印出for loop的总数,谢谢。一些非常简单的事情,比如我的print语句在循环中被错误地标记了,我可以看到它。这段代码给出了一个错误:AvTemp+=sum(float(第[1]行))TypeError:“float”对象不是iterableThanks,但它仍然累计打印每个值,即打印的每个条目是当前行与列中所有前几行的相加,使用我发布的数据显示的输出是:
1.5 3.5 6.0 8.7 11.5 14.5 18.2 22.3 26.5 31.1 37.0 43.3 50.1 58.0 66.1 73.980.7 86.5 91.5 96.2 100.2 103.9 107.4 111.4 114.2
@1cm69您正在打印内部for loop,因此这样的输出,最后打印出for loop的总数,谢谢。一些非常简单的事情,比如我的print语句在循环中被错误地标记了,我可以看到它越来越近了,尽管它最终显示了列total,但它首先一个接一个地打印所有累积条目。我试图只打印最终结果,即114.2(索引[1]中所有条目的总和)。这越来越近了,尽管它最终显示了总计列,但它首先一个接一个地打印所有累积条目。我试图只打印最终结果,即114.2(索引[1]中所有项的总和)