pandas read_csv并且只保留某些行(python)

时间:2016-09-06 00:39:34

标签: python pandas

我知道允许您传递包含要跳过的行索引的列表的跳过。但是,我有我想要保留的行的索引。

假设我的cvs文件对于数百万行来说是这样的:

import wx
def get_path(wildcard):
    app = wx.App(None)
    style = wx.FD_MULTIPLE | wx.FD_FILE_MUST_EXIST
    dialog = wx.FileDialog(
        None, 
        'Open', 
        wildcard=wildcard, 
        style=style)
    if dialog.ShowModal() == wx.ID_OK:
        path = dialog.GetPath()
    else:
        path = None
    dialog.Destroy()
    return path
print get_path('*.txt')

我想加载的索引列表只有2,3,所以

  A B
0 1 2
1 3 4
2 5 6
3 7 8
4 9 0

skiprows函数的输入为[0,1,4]。但是,我只有[2,3]。

我正在尝试类似的事情:

index_list = [2,3]

但没有运气..有什么建议吗?

谢谢,我感谢所有的帮助,

2 个答案:

答案 0 :(得分:3)

我认为您需要先找到行数,例如this

num_lines = sum(1 for line in open('myfile.txt'))

然后你需要删除index_list

的索引
to_exclude = [i for i in num_lines if i not in index_list]

然后加载您的数据:

pd.read_csv(path, skiprows = to_exclude)

答案 1 :(得分:1)

您可以在skiprows参数中传入lambda函数。例如:

rows_to_keep = [2,3]
pd.read_csv(path, skiprows = lambda x: x not in rows_to_keep)

您可以在文档here

中了解更多信息