我在尝试导入pandas的CSV文件时出现问题。该文件的结构如下:
所以我在使用pandas.read_csv
导入它时遇到问题。理想情况下,我希望pandas在导入时忽略单引号和双引号(不考虑数据框的结构,而不是将它们作为字符导入)。
我真的不知道在使用pandas.read_csv
之前是否应该操纵CSV文件,或者我可以选择忽略这些字符。
答案 0 :(得分:1)
pd.read_csv
方法第一个参数是文件名或流。
您可以手动读取文件并在将其传递给pandas之前对其进行操作。
sio = StringIO("id,category,value\n1,beer,2.40\n2,wine,6.40\n3,$$$Theawsomestuff$$$###,166.00"
pd.read_csv(sio)
id category value
0 1 beer 2.4
1 2 wine 6.4
2 3 $$$Theawsomestuff$$$### 166.0
因此,继承StringIO,您可以更改read
方法
class StreamChanger(StringIO):
def read(self, **kwargs):
data = super().read(**kwargs)
data = data.replace("$", "")
data = data.replace("#", "")
return data
sio = StreamChanger("id,category,value\n1,beer,2.40\n2,wine,6.40\n3,$$$Theawsomestuff$$$###,166.00")
pd.read_csv(sio)
id category value
0 1 beer 2.4
1 2 wine 6.4
2 3 Theawsomestuff 166.0
答案 1 :(得分:1)
使用参数'引用'并将值3传递给read_csv。创建数据框后,您应该处理数据和标题中的引号。
import pandas as pd
df=pd.read_csv('check.txt',doublequote=True,delimiter=',',quoting=3)
df=df.replace({'"': '','\'':''}, regex=True)
df.columns = ['Id1','StartTime','start_lat','start_long','StartGeohash']
print df
示例文件
'Id1,StartTime,start_lat,start_long,StartGeohash
"113,2016-11-01 10:50:28.063,-33.139507,-100.226715,9vbsx2"
"113,2016-11-02 10:49:24.063,-33.139507,-100.226715,9vbsx2"
"115,2016-11-03 10:55:20.063,-36.197660,-101.186050,9y2jcm"'
输出
Id1 StartTime start_lat start_long StartGeohash
0 113 2016-11-01 10:50:28.063 -33.139507 -100.226715 9vbsx2
1 113 2016-11-02 10:49:24.063 -33.139507 -100.226715 9vbsx2
2 115 2016-11-03 10:55:20.063 -36.197660 -101.186050 9y2jcm