Python CSV取字段中数据的平方根

2024-04-25 00:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CSV文件,里面有数字

enter image description here

我写了一个脚本,试着在这个CSV文件的每个字段中取数字的平方根

import sys, os

import csv, math
import tempfile
import shutil

element = []
filename = 'test.csv'
with open(filename, 'rb') as f, tempfile.NamedTemporaryFile(mode='wb', delete=False) as g:
    writer = csv.writer(g, delimiter = ',')
    for row in csv.reader(f):
        element = element in row
        row = math.sqrt(element)
        writer.writerow([row])

shutil.move(g.name, filename)

但输出不是我想要的

enter image description here

我应该编辑什么脚本


Tags: 文件csvinimport脚本as数字math
3条回答

我觉得你太复杂了。尝试类似于:

import numpy as np

data = np.loadtxt('input.csv', delimiter=',')
data = np.sqrt(data)
data = np.where(np.isnan(data), 0, data)
np.savetxt('output.csv', data, delimiter=',')

注意:这假设您没有读取不规则的结构化数据。在

您正在计算False的平方根,这与0的平方根相同

>>> element = element in row
False
>>> row = math.sqrt(element)
0

修改如下:

^{pr2}$

代码中的错误是由于以下行:

element = element in row

这将返回True或False。对真或假的平方根运算毫无意义。在

以下是运行代码的示例:

^{pr2}$

替换代码中的以下行:

    element = element in row
    row = math.sqrt(element)
    writer.writerow([row])

有:

    sqrts = [math.sqrt(x) for x in row]
    writer.writerow(sqrts)

示例:

>>> sqrts = [math.sqrt(x) for x in row]
>>> sqrts
[1.0, 1.4142135623730951, 1.7320508075688772, 2.0]

相关问题 更多 >