Python删除列

时间:2016-06-28 19:52:57

标签: python csv

我正在尝试使用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]) )

谢谢!

1 个答案:

答案 0 :(得分:3)

执行此类操作的正确Pythonic方法是通过切片

r[start:stop(:step)]

startstop是索引,其中正面索引从前面开始计数,而负数从末尾开始计算。空白startstop分别被视为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]