Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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 3中的特定列_Python_Csv - Fatal编程技术网

尝试删除Python 3中的特定列

尝试删除Python 3中的特定列,python,csv,Python,Csv,我是编写第一个高效程序的python高手。我的项目的要点是,我正在尝试导入一个CSV,将它按行10-100000转到文件1,100001-200000转到文件2,等等分割成两个不同的CSV文件。在某个时候,我想删除指定的列,特别是第5-400列,这些列在除以3时有一个1的余数,但稍后我会添加该位。现在,我只是想删除第一行 import csv import itertools import ctypes signals = open('EPcathBIO_FILTERED.csv') csv_

我是编写第一个高效程序的python高手。我的项目的要点是,我正在尝试导入一个CSV,将它按行10-100000转到文件1,100001-200000转到文件2,等等分割成两个不同的CSV文件。在某个时候,我想删除指定的列,特别是第5-400列,这些列在除以3时有一个1的余数,但稍后我会添加该位。现在,我只是想删除第一行

import csv
import itertools
import ctypes

signals = open('EPcathBIO_FILTERED.csv')
csv_sig = csv.reader(signals)

csv_head = open('EPcathBIO_HEAD.csv', 'w', newline='')
cs_writer = csv.writer(csv_head, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
for row in itertools.islice(csv_sig, 180):
    print(row)
    cs_writer.writerow(row)   
csv_head.close()

csv_body = open('EPcathBIO_BODY.csv', 'w', newline='')
cs_writer = csv.writer(csv_body, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
for row in csv_sig: # itertools.islice(csv_sig, 0, 182): #restrict to start of body to the end
    cs_writer.writerow(row)

for E in csv_body:
    del E[1]
csv_body.close()  

signals.close()
但我一直得到以下错误:

Traceback (most recent call last):
  File "C:\Users\Benjamin\Documents\JPH Lab\Data\2015_02_10_19_51_55\processor.py", line 22, in <module>
for E in csv_body:
io.UnsupportedOperation: not readable
谢谢你的帮助和耐心

您在w写入模式下打开了csv_主体。这意味着您只能向其中写入数据,而不能从中读取数据。由于无法从中读取数据,因此无法对其进行迭代。您需要以rw读/写模式打开它。您还需要通过查找将其回放到文件的开头

但即使您这样做了,csv_body只是一个文本文件,它也不知道如何删除这样的元素

另外,在您的示例中,csv_头和csv_体都从第0行转到第180行。我假设你希望csv_头达到180,csv_体达到180或更高

你真的应该用熊猫包来做这个。假设您希望头部在180处结束,身体在180处开始,那么您的整个脚本是这样的:

import pandas as pd

signals = pd.read_csv('EPcathBIO_FILTERED.csv')
signals.iloc[180:].to_csv('EPcathBIO_HEAD.csv')
signals.iloc[:180, 1:].to_csv('EPcathBIO_BODY.csv')
打开文件时,结果是一个只能读取一次的流对象,就像磁带一样。在这里,您尝试访问已经到达其末端的流