gpt4 book ai didi

python - 删除Python中的列

转载 作者:太空宇宙 更新时间:2023-11-03 19:02:44 24 4
gpt4 key购买 nike

有一个包含大约 50 列和几行的逗号分隔文件,我需要删除所有始终为 0 的列(即该列中的所有值都为零)。

使用以下代码读取文件:

with open('data.txt', 'rb') as f:
reader.csv.reader(f, delimiter=',')
for row in reader:
print row


0 0.1 0.3 0.4 0
0 0.2 0.5 0.3 0
0 0.7 0.9 0.2 0

如何从该内存结构中准确删除列(即 0)。如果不需要重新写入和重新读取另一个临时 csv 文件来实现此目的,那就更好了。

最佳答案

读取所有行(将所有值映射到 float ),使用zip(*rows)转换为列,使用any()仅保留具有非零值的任何行,使用 zip(*columns) 转换回行:

with open('data.txt', 'rb') as f:
rows = list(map(float, row) for row in csv.reader(f, delimiter=','))

rows = zip(*[col for col in zip(*rows) if any(col)])

最后一步作为演示:

>>> rows = [[0, 0.1, 0.3, 0.4, 0], [0, 0.2, 0.5, 0.3, 0], [0, 0.7, 0.9, 0.2, 0]]
>>> zip(*[col for col in zip(*rows) if any(col)])
[(0.1, 0.3, 0.4), (0.2, 0.5, 0.3), (0.7, 0.9, 0.2)]

关于python - 删除Python中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com