我有以下详情的csv
Name,Desc,Year,Location
Jhon,12" Main Third ,2012,GR
Lew,"291" Line (12,596,3)",2012,GR
,All, 1992,FR
...
这是一个很长的文件。我只是显示有问题的行。我很困惑如何在Pandas数据框中读取它,我试过
月
类似于pandas read_csv 的属性。 仍然没有成功。
我无法控制如何设计csv。
答案 0 :(得分:1)
你可以这样做。试试这是否适合你:
import pandas as pd
import re
l1=[]
with open('/home/yusuf/Desktop/c1') as f:
headers = f.readline().strip('\n').split(',')
for a in f.readlines():
if a:
q = re.findall("^(\w*),(.*),\s?(\d+),(\w+)",a)
if q:
l1.append(q)
l2 = [list(b[0]) for b in l1]
df = pd.DataFrame(data=l2, columns=headers)
df
输出:
正则表达式演示:https://regex101.com/r/AU2WcO/1
答案 1 :(得分:0)
您不能在字段中包含分隔符。 例如,在
中Lew,"291" Line (12,596,3)",2012,GR
Pandas假设您有6个字段,因为您有5个逗号,即使其中两个在引号之间。您需要对文本文件进行一些预处理以解决此问题,或者要求使用不同的分隔符(@或|似乎在我的经验中运行良好。
Pandas在阅读其他内容时没有任何问题:
import pandas as pd
print pd.read_csv('untitled.txt')
Name Desc Year Location
0 Jhon 12" Main Third 2012 GR
1 NaN All 1992 FR