Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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编写的csv文件包含错误的数字格式_Python_Csv_Numpy_Format_Writer - Fatal编程技术网

用Python编写的csv文件包含错误的数字格式

用Python编写的csv文件包含错误的数字格式,python,csv,numpy,format,writer,Python,Csv,Numpy,Format,Writer,此脚本读取一个文本文件,对每列每3行取平均值,并将其写入csv文件: 输入文件: 2013-08-29T15:11:18.55912 0.019494552 0.110042184 0.164076427 0.587849877 2013-08-29T15:11:18.65912 0.036270974 0.097213155 0.122628797 0.556928624 2013-08-29T15:11:18.75912 0.055350041 0.104121094 0.121

此脚本读取一个文本文件,对每列每3行取平均值,并将其写入csv文件:

输入文件:

2013-08-29T15:11:18.55912   0.019494552 0.110042184 0.164076427 0.587849877
2013-08-29T15:11:18.65912   0.036270974 0.097213155 0.122628797 0.556928624
2013-08-29T15:11:18.75912   0.055350041 0.104121094 0.121641949 0.593113069
2013-08-29T15:11:18.85912   0.057159263 0.107410588 0.198122695 0.591797271
2013-08-29T15:11:18.95912   0.05288292  0.102476346 0.172958062 0.591139372
2013-08-29T15:11:19.05912   0.043507861 0.104121094 0.162102731 0.598376261
2013-08-29T15:11:19.15912   0.068343545 0.102805296 0.168517245 0.587849877
2013-08-29T15:11:19.25912   0.054527668 0.105765841 0.184306818 0.587191978
2013-08-29T15:11:19.35912   0.055678991 0.107739538 0.169997517 0.539165352
脚本:

data = loadtxt('infile.txt', usecols = (1,2,3,4))
with open ('out.csv', 'wb') as outfile:
    writer = csv.writer(outfile, delimiter = '\t')
    seg_len = 3       
    for x in range(0, len(data[:,1]), seg_len):
        sample_means = ([x/seg_len], [mean(data[x:x+seg_len,i]) for i in range(4)])
        bi = list(chain.from_iterable(sample_means))
        writer.writerow ((', '.join(map(repr, bi))))
输出CSVfile:

0    0.037038...    0.10379...  ...
1    0.051183...    0.10466...  ...
2    00059516...    0.10543...  ...
但是当我打开csv文件和sum列时,它给出了零!似乎它们不是数字。我直接从CSV文件复制,它看起来像这样:

"0      "   "   0   .   0   3   7   0   3   8   5   2   2   3   3   3   3   3   3   3   3       "   "   0   .   1   0   3   7   9   2   1   4   4   3   3   3   3   3   3   3   2       "
"1      "   "   0   .   0   5   1   1   8   3   3   4   7   9   9   9   9   9   9   9   9   7       "   "   0   .   1   0   4   6   6   9   3   4   2   6   6   6   6   6   6   6   6       "
"2      "   "   0   .   0   5   9   5   1   6   7   3   4   6   6   6   6   6   6   6   6   1       "   "   0   .   1   0   5   4   3   6   8   9   1   6   6   6   6   6   6   6   6       "

有人能建议如何解决这个问题吗?

您的部分问题是
writerow
需要一个iterable值。您给它一个字符串(输出为“
”,”.join
),因此字符串中的每个字母都会写入到文件中一个分隔的字段中。如果您将
bi
直接传递给writerow,它至少应该解决该特定问题。

部分问题在于
writerow
需要一个可数的值。您给它一个字符串(输出为“
”,”.join
),因此字符串中的每个字母都会写入到文件中一个分隔的字段中。如果您将bi直接传递给writerow,它至少可以解决这个特定的问题。

也许您正在寻找这个

sample_means = [x/seg_len] + [mean(data[x:x+seg_len,i]) for i in range(4)]
writer.writerow(sample_means)

也许你在找这个

sample_means = [x/seg_len] + [mean(data[x:x+seg_len,i]) for i in range(4)]
writer.writerow(sample_means)

要澄清的是,“输出CSV”下的部分是您所期望的,而下面的部分是您所得到的吗?输出文件正好显示了我所期望的。但正如我所说,它们看起来就像数字,但你不能求和,平均。。。它们应该是数字,这样我就可以进行统计分析。下面的一个从csv单元格复制并粘贴到此处。我认为这就是为什么它们不被算作数字,但不知道如何处理的原因。为了澄清,在“输出CSV”下的部分是你所期望的,而下面的部分是你所得到的吗?输出文件正好显示了我所期望的。但正如我所说,它们看起来就像数字,但你不能求和,平均。。。它们应该是数字,这样我就可以进行统计分析。下面的一个从csv单元格复制并粘贴到此处。我认为这就是为什么它们不被算作数字,但不知道如何接近的原因。它是,但写了两个单独的列表。我添加了bi以删除括号。也许这不是最好的办法!如果过于复杂,使用
bi
将两个列表的元组展平应该可以。还有一些更简单的方法,比如结构怪人的答案使用的方法。它确实如此,但写了两个单独的列表。我添加了bi以删除括号。也许这不是最好的办法!如果过于复杂,使用
bi
将两个列表的元组展平应该可以。还有一些更简单的方法,比如结构怪胎的答案。这会将两个列表一起写在一个单元格中,而我希望它们分别列在不同的列中。不,实际上不是这样。您确定
'\t'
是用于打开结果文件的正确分隔符吗?您是对的,删除'\t'解决了问题。非常感谢:)这会将两个列表一起写在一个单元格中,而我希望它们分别列在不同的列中。不,它真的没有。您确定
'\t'
是用于打开结果文件的正确分隔符吗?您是对的,删除'\t'解决了问题。非常感谢:)