我有一个熊猫数据框:
type(original)
pandas.core.frame.DataFrame
其中包括系列对象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中字段的命令之一(一部分)。我想根据这些命令构建数据框架。
当我尝试直接制作数据框时,每行仅获得一列,并且此列包含整个字典:
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
字段设置为默认索引外,它的工作方式几乎与我想要的一样。
每个字典有40个键,但我只需要10个键,并且在数据框中有28734行。
如何过滤不需要的密钥?
我将尝试做的是以下内容:
new_df = pd.DataFrame(list(original['user']))
这会将系列转换为列表,然后将其传递给pandas数据框,其余部分应由其负责。
问题内容: 似乎我可以通过创建mmap’d ndarray并使用它来初始化python系列的memmap底层数据。 成功!似乎它由只读的内存映射ndarray支持。我可以对DataFrame做同样的事情吗?以下失败 以下成功,但仅适用于一列: …这样我 就可以 不复制而制作DF。但是,这仅适用于一列,我想要很多。我发现了用于组合1列DF的方法:pd.concat(.. copy = False),
问题内容: 我有一个如下的Pandas DataFrame TimeReviewed是系列类型 我已经在下面尝试过,但是它仍然没有改变Series类型 如何将df.TimeReviewed更改为DateTime类型并分别拉出年,月,日,时,分,秒?我是python的新手,感谢您的帮助。 问题答案: 您不能:按定义列是。也就是说,如果使(所有元素的类型)类似日期时间,则可以通过访问器(docs)访问
问题内容: 我试图弄清楚如何以一种聪明的方式对由于groupby聚合而生成的系列进行排序。 我像这样生成DataFrame的聚合: 这导致了一个系列。我现在尝试按值对它进行排序,但是会出现错误: 然后,我尝试创建一个副本: 我怎样才能使这种工作? 问题答案: 使用,即。[ 熊猫v0.17 + ] (非常老的答案,v0.17之前/ 2015) 大熊猫用于使用方法:。
问题内容: 我想在中设置多列的(我有一个文件,我不得不手动将其解析为列表列表,因为该文件不适合) 我懂了 我可以设置它们的唯一方法是循环遍历每个列变量并使用重铸。 有没有更好的办法? 问题答案: 从0.17开始,您必须使用显式转换: (如下所述,在0.17中已不再使用“魔术”了) 您可以将它们应用于要转换的每一列: 并确认dtype已更新。 适用于大熊猫0.12-0.16的旧/建议答案:您可以用来
问题内容: 有很多类似的问题,但没有一个专门针对此问题。 我有一个数据帧列表,我需要使用唯一列将它们合并在一起。字段名称不同,因此concat退出了。 我可以手动使用等将每个df逐一合并,但是问题是列表中数据帧的数量随用户输入而不同。 有什么合并方法可以一次性将所有数据帧合并到一个列表中?还是某些for in loop? 我正在使用Python 2.7。 问题答案: 您可以使用函数where是数据
问题内容: 我正在考虑对每个具有大量列的数据帧进行合并操作。不想结果有两个具有相同名称的列。我正在尝试查看两个框架之间共有的列名列表: 我该如何在Index对象上操作该NumPy布尔数组,使其仅返回公用列的列表? 问题答案: 使用或: 后一种选择的替代语法: