我有很多的csv文件格式化:
date1::tweet1::location1::language1
date2::tweet2::location2::language2
date3::tweet3::location3::language3
等等。一些文件包含多达200 000条推文。我想提取4个字段并将它们放在pandas数据帧中,以及计算推文的数量。这是我现在使用的代码:
try:
data = pd.read_csv(tweets_data_path, sep="::", header = None, engine='python')
data.columns = ["timestamp", "tweet", "location", "lang"]
print 'Number of tweets: ' + str(len(data))
except BaseException, e :
print 'Error: ',str(e)
我收到了以下错误
Error: expected 4 fields in line 4581, saw 5
我尝试设置error_bad_lines = False,手动删除导致程序错误的行,将nrows设置为较低的数字..然后仍然得到那些"期望的字段"随机线的错误。假设我删除了文件的下半部分,我将得到相同的错误但是对于第1787行。由于之前处理正确,因此对我没有意义。目视检查csv文件并不能显示突然出现在有缺陷的线路中的突出模式。
日期字段和推文包含冒号,网址等等,所以也许正则表达式会有意义吗?
有人可以帮我弄清楚我做错了什么吗?非常感谢提前!
以下要求的数据样本:
Fri Apr 22 21:41:03 +0000 2016::RT @TalOfer: Barack Obama: Brexit would put UK back of the queue for trade talks [short url] #EuRef #StrongerIn::United Kingdom::en
Fri Apr 22 21:41:07 +0000 2016::RT @JamieRoss7: It must be awful to strongly believe in Brexit and be watching your campaigns make an absolute horse's arse of it.::The United Kingdom::en
Fri Apr 22 21:41:07 +0000 2016::Whether or not it rains on June 23rd will have more influence on the vote than Obama's lunch with the Queen and LiGA with George. #brexit.::Dublin, Ireland::en
Fri Apr 22 21:41:08 +0000 2016::FINANCIAL TIMES FRONT PAGE: 'Obama warns Brexit vote would send UK to 'back of trade queue' #skypapers [short url]::Mardan, Pakistan::en
答案 0 :(得分:0)
您是否尝试过read_table
?我之前尝试使用read_csv
时出现了这种错误,并且通过使用它解决了问题。请参阅此post,这可能会为您提供有关如何解决错误的一些想法。也许还可以尝试sep=r":{2}"
作为分隔符。
答案 1 :(得分:0)
从这开始:
pd.read_csv(tweets_data_path, sep="::", header = None, usecols = [0,1,2,3])
上面应该有4列,然后你可以弄清楚丢弃了多少行,以及数据是否有意义。
使用此模式:
data["lang"].unique()
因为,你有数据问题,而不是它的位置。您需要退后一步并使用python&#csv reader'。这应该让你开始。
import csv
reader = csv.reader(tweets_data_path)
tweetList = []
for row in reader:
try:
tweetList.append( (row[0].split('::')) )
except BaseException, e :
print 'Error: ',str(e)
print tweetList
tweetsDf = pd.DataFrame(tweetList)
print tweetsDf
0 \
0 Fri Apr 22 21:41:03 +0000 2016
1 Fri Apr 22 21:41:07 +0000 2016
2 Fri Apr 22 21:41:07 +0000 2016
3 Fri Apr 22 21:41:08 +0000 2016
1 2 3
0 RT @TalOfer: Barack Obama: Brexit would put UK... United Kingdom en
1 RT @JamieRoss7: It must be awful to strongly b... The United Kingdom en
2 Whether or not it rains on June 23rd will hav... Dublin None
3 FINANCIAL TIMES FRONT PAGE: 'Obama warns Brexi... Mardan None