假如我有一个看起来像这样的.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
答案 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)