从未知对象创建数据帧

2024-03-29 10:34:48 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个.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


Tags: columns文件csv数据fromcreatingdataframeit
2条回答

你可以在理解中使用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

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

例如:

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)

相关问题 更多 >