我正在尝试使用Python从数据框中删除最后两列。
问题是我们不需要最后两列中包含值的单元格,并且这些列没有标题。
这是我编写的代码,但我是Python的新手,并且不知道如何获取原始数据并删除最后两列。
import csv
with open("Filename","rb") as source:
rdr= csv.reader( source )
with open("Filename","wb") as result:
wrt= csv.writer ( result )
for r in rdr:
wrt.writerow( (r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7], r[8], r[9], r[10], r[11]) )
谢谢!
答案 0 :(得分:3)
执行此类操作的正确Pythonic方法是通过切片:
r[start:stop(:step)]
start
和stop
是索引,其中正面索引从前面开始计数,而负数从末尾开始计算。空白start
和stop
分别被视为r
的开头和结尾。 step
是一个可选参数,我稍后会解释。任何切片都会返回一个数组,您可以在其上执行其他操作或立即返回。
要删除最后两个值,可以使用切片
r[:-2]
step
现在是step
参数。它允许您从所选切片中选择每个step
值。使用数组,例如r = [0,1,2,3,4,5,6,7,8,9,10]
,您可以使用切片r[::2]
从第一个(所有偶数)开始选择所有其他数字。为了以相反的顺序获得结果,您可以使步骤为负:
> r = [0,1,2,3,4,5,6,7,8,9,10]
[0,1,2,3,4,5,6,7,8,9,10]
> r[::-1]
[10,9,8,7,6,5,4,3,2,1,0]