0

我对python比较陌生,遇到了很多问题。我正在尝试使用包含许多空值的 csv 文件中的两列来创建一个图形。有没有办法将空值转换为零或删除某些列中包含空值的行?

4

1 回答 1

1

您提出的问题未详细说明,但我认为如果我们选择一个具体示例,您应该能够弄清楚如何使其适应您的实际用例。

因此,假设您的值都是浮点数的字符串表示形式,或者是表示 null 的空字符串:

A,B
1.0,2.0
2.0,
,3.0
4.0,5.0

假设您正在使用 a 阅读此内容csv.reader,并且您正在使用某个函数逐个显式处理行do_stuff_with

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        a, b = map(float, row)
        do_stuff_with(a, b)

现在,如果您想将 null 值视为 0.0,您只需替换为返回non-empty和emptyfloat的函数:float(x)x0.0x

def nullable_float(x):
    return float(x) if x else 0.0

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        a, b = map(nullable_float, row)
        do_stuff_with(a, b)

如果要跳过 B 列中包含空值的任何行,只需在进行转换之前检查 B 列:

with open('foo.csv') as f:
    next(reader) # skip header
    for row in csv.reader(f):
        if not row[1]:
            continue
        a, b = map(nullable_float, row)
        do_stuff_with(a, b)
于 2013-04-08T22:41:53.037 回答