将一个csv读入一个df,这样它的行就可以被拆分成多行

2024-06-25 23:25:04 发布

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

我想把这个csv文件读入pandas.DataFrame。你知道吗

Id,Name,Shape Library,Page Name,Line Connection Start,Line Connection End,Text Area 1,Text Area 2,Text Area 3,Text Area 4
1,Page,,0:Page 1,,,,,,
2,Table,Tables,0:Page 1,,,Openingsuren gemeentehuis,Action,"Is het gemeentehuis open?
Wat zijn de openingsuren van het gemeentehuis
Wanneer is het gemeentehuis open","webhook
De webserver staat niet op denk ik, gelieve ... te contacteren"
3,easy,Tables,0:Page 1,,,Openignsuren andere dag,Action,"En morgen?",
4,easy,Tables,0:Page 1,,,Openingsuren,,,

但是有些行可以以多行的形式显示(请参见Id 2)

有没有一种方法,能正确地把这个读入一个新的世界?你知道吗


Tags: csvtextnameidtableseasylinepage
1条回答
网友
1楼 · 发布于 2024-06-25 23:25:04

您可以使用csv模块编写自己的解析器,然后为pandas构建生成器,如:

代码:

import csv
import pandas as pd

def read_my_csv(file_handle):
    # build csv reader
    reader = csv.reader(file_handle)

    # get and yield the header
    header = next(reader)
    yield header

    # for each row, get enough data and then yield the row
    for row in reader:
        while len(row) < len(header):
            row += next(reader)
        yield row

with open('file1', 'rU') as f:
    generator = read_my_csv(f)
    columns = next(generator)
    df = pd.DataFrame(generator, columns=columns)

print(df)

结果:

  Id   Name Shape Library Page Name Line Connection Start Line Connection End  \
0  1   Page                0:Page 1                                             
1  2  Table        Tables  0:Page 1                                             
2  3   easy        Tables  0:Page 1                                             
3  4   easy        Tables  0:Page 1                                             

                 Text Area 1 Text Area 2  \
0                                          
1  Openingsuren gemeentehuis      Action   
2    Openignsuren andere dag      Action   
3               Openingsuren               

                                         Text Area 3  \
0                                                      
1  Is het gemeentehuis open?\nWat zijn de opening...   
2                                         En morgen?   
3                                                      

                                         Text Area 4  
0                                                     
1  webhook\nDe webserver staat niet op denk ik, g...  
2                                                     
3 

相关问题 更多 >