【问题标题】:python, dictionary in a data frame, sortingpython,数据框中的字典,排序
【发布时间】:2017-02-18 00:08:18
【问题描述】:

我有一个名为 wiki 的 python 数据框,其中包含某些人的 wikipedia 信息。 每行是一个不同的人,列是:'name'、'text'和'word_count'。 'text' 中的信息已被放入字典形式(键、值)中,以在 'word_count' 列中创建信息。

如果我想提取与巴拉克奥巴马相关的行,那么:

row = wiki[wiki['name'] == 'Barack Obama']

现在,我想要最流行的词。当我这样做时:

adf=row[['word_count']]

我得到另一个数据框,因为我看到了:

type(adf)=<class 'pandas.core.frame.DataFrame'>

如果我这样做了

adf.values

我明白了:

array([[ {u'operations': 1, u'represent': 1, u'office': 2, ..., u'began': 1}], dtype=object)

但是,让我非常困惑的是大小是 1

adf.size=1

因此,我不知道如何实际提取键和值。 adf.values[1] 之类的东西不起作用

最终,我需要做的是对 word_count 中的信息进行排序,以便最常用的单词首先出现。 但我想了解如何访问字典内、数据框内的信息……我对这里的类型一无所知。我对编程并不陌生,但我对 python 比较陌生。

非常感谢任何帮助

【问题讨论】:

    标签: python sorting pandas dictionary dataframe


    【解决方案1】:

    如果名称列是唯一的,则可以将该列更改为DataFrame 对象的索引:wiki.set_index("name", inplace=True)。然后可以通过wiki.at['Barack Obama', 'word_count']获取值。

    使用您的代码:

    row = wiki[wiki['name'] == 'Barack Obama']
    adf = row[['word_count']]
    

    第一行使用bool数组获取数据,这里是文档:http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing

    wikiDataFrame 对象,row 也是只有一行的DataFrame 对象,如果名称列是唯一的。

    第二行从row获取列列表,这里是文档:http://pandas.pydata.org/pandas-docs/stable/indexing.html#basics

    您会得到一个只有一行和一列的DataFrame

    这是.at[]的文件:http://pandas.pydata.org/pandas-docs/stable/indexing.html#fast-scalar-value-getting-and-setting

    【讨论】:

    • 非常感谢,效果很好!我不明白其中的逻辑。为什么可以使用 wiki.at['Barack Obama','word_count'] 提取信息,但我之前尝试过使用 row[['word_count']] 无法提取信息?如果您知道一些有用的东西我可以阅读以理解这一点,请您指点我吗?或者,如果你能详细说明这一点,那也很好。非常感谢你
    • @user3177938 我添加了一些文档链接,请查看。
    猜你喜欢
    • 2013-05-01
    • 2022-11-25
    • 2021-09-04
    • 2011-05-18
    • 2015-06-26
    • 1970-01-01
    • 2018-05-08
    • 1970-01-01
    • 2011-01-25
    相关资源
    最近更新 更多