【发布时间】:2015-05-02 03:19:38
【问题描述】:
这是我的代码。由于要解析的原始数据的内容,我最终得到的“用户列表”和“推文列表”的长度不同。将列表写为数据框中的列时,我得到ValueError: arrays must all be same length。我意识到这一点,但一直在寻找一种解决方法,在较短数组的正确位置打印0 或NaN。有任何想法吗?
import pandas
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('#raw.html'))
chunk = soup.find_all('div', class_='content')
userlist = []
tweetlist = []
for tweet in chunk:
username = tweet.find_all(class_='username js-action-profile-name')
for user in username:
user2 = user.get_text()
userlist.append(user2)
for text in chunk:
tweets = text.find_all(class_='js-tweet-text tweet-text')
for tweet in tweets:
tweet2 = tweet.get_text().encode('utf-8')
tweetlist.append('|'+tweet2)
print len(tweetlist)
print len(userlist)
#MAKE A DATAFRAME WITH THIS
data = {'tweet' : tweetlist, 'user' : userlist}
frame = pandas.DataFrame(data)
print frame
# Export dataframe to csv
frame.to_csv('#parsed.csv', index=False)
【问题讨论】:
-
这个问题应该是重复的,因为重点是从
dict创建数据框,包含不均匀的arrays。data = {'tweet' : tweetlist, 'user' : userlist}和frame = pandas.DataFrame(data)。重复的人回答了这个问题并且有一个被接受的答案。
标签: python arrays pandas dataframe