从未知行创建数据框

时间:2018-04-06 11:40:01

标签: python pandas csv dataframe row

假如我有一个看起来像这样的.csv文件:

0,0
1,1
2,2
3,3
4,4
5,5,5,5
6,6,6,6
7,7,7,7

如何根据行号创建第5行的数据帧?显然我知道你可以制作header=5,但我希望它能做更像header=#when it reaches 4 columns#的事情,无论那行是什么。

我意识到这个问题并不像我需要的那么具体,所以我在此重申:Creating a dataframe from different rows

2 个答案:

答案 0 :(得分:1)

您可以在理解中使用str.count。然后将其包装在数据框构造函数中。

from pandas.io.common import StringIO as sio
pd.read_csv(sio(
    ''.join(l for l in open('test.csv') if l.count(',') > 2)
), header=None)

   0  1  2  3
0  5  5  5  5
1  6  6  6  6
2  7  7  7  7

答案 1 :(得分:0)

我的解决方案是首先将csv作为普通文件读取,逐行过滤该文件,然后使用io.StringIO以数据帧的形式读取“已编辑的csv”。注意:这不适用于大文件。

例如:

import io
import pandas as pd

new_csv = []
with open('csv.csv') as f:
    for line in f:
        if len(line.split(',')) >= 4:
            new_csv.append(line)
file_io = io.StringIO('\n'.join(new_csv))
df = pd.read_csv(file_io)