我有一个熊猫数据框:
type(original) pandas.core.frame.DataFrame
其中包括系列对象original['user']:
original['user']
type(original['user']) pandas.core.series.Series
original['user'] 指出了一些命令:
type(original['user'].ix[0]) dict
每个字典具有相同的键:
original['user'].ix[0].keys() [u'follow_request_sent', u'profile_use_background_image', u'profile_text_color', u'id', u'verified', u'profile_location', # ... keys removed for brevity ]
上面是tweeter APIuser的tweet中字段的命令之一(一部分)。我想根据这些命令构建数据框架。
user
当我尝试直接制作数据框时,每行仅获得一列,并且此列包含整个字典:
pd.DataFrame(original['user'][:2]) user 0 {u'follow_request_sent': False, u'profile_use_... 1 {u'follow_request_sent': False, u'profile_use_..
当我尝试使用from_dict()创建数据框时,得到相同的结果:
pd.DataFrame.from_dict(original['user'][:2]) user 0 {u'follow_request_sent': False, u'profile_use_... 1 {u'follow_request_sent': False, u'profile_use_..
接下来,我尝试了列表理解,但返回了错误:
item = [[k, v] for (k,v) in users] ValueError: too many values to unpack
当我从单行创建数据框时,它几乎可以正常工作:
df = pd.DataFrame.from_dict(original['user'].ix[0]) df.reset_index() index contributors_enabled created_at default_profile default_profile_image description entities favourites_count follow_request_sent followers_count following friends_count geo_enabled id id_str is_translation_enabled is_translator lang listed_count location name notifications profile_background_color profile_background_image_url profile_background_image_url_https profile_background_tile profile_image_url profile_image_url_https profile_link_color profile_location profile_sidebar_border_color profile_sidebar_fill_color profile_text_color profile_use_background_image protected screen_name statuses_count time_zone url utc_offset verified 0 description False Mon May 26 11:58:40 +0000 2014 True False {u'urls': []} 0 False 157
除了将description字段设置为默认索引外,它的工作方式几乎与我想要的一样。
description
每个字典有40个键,但我只需要10个键,并且在数据框中有28734行。
如何过滤不需要的密钥?
我将尝试做的是以下内容:
new_df = pd.DataFrame(list(original['user']))
这会将系列转换为列表,然后将其传递给pandas数据框,其余部分应由其负责。