【问题标题】:What is the appropriate method to replace a dataframe with a subset using pandas.dataframe.query method()?使用 pandas.dataframe.query 方法()用子集替换数据框的适当方法是什么?
【发布时间】:2017-01-01 00:34:31
【问题描述】:

这个问题和我在这里问的非常相似:

Python Pandas SettingWithCopyWarning copies vs new objects

我想了解如何排除给定数据框中的记录(IE 对数据框进行操作,而不是对其进行查看),同时还可以选择对结果应用其他操作。

在对 Pandas DataFrame 对象进行操作时,我很难理解 Python 如何管理引用与值分配。我正在使用 Pandas Dataframe 中的数据集,我想根据某些属性值减少设置。我还想对这个操作的结果应用额外的操作。我想使用的首选方法是 .query() 方法。这是一个简单的例子:

mydf = pd.DataFrame({'col1':['A','B','C'],
                 'col2':['x','y','z']})
mydf = mydf.query('col1 == \'A\'')

这将在概念上完成我正在寻找的东西;根据对它的查询,减少了我正在使用的数据集。我的问题是这样的:

“这是查询功能的正确应用,还是如果我对 'mydf' 有其他操作要执行,我应该做其他事情”?

我已经阅读了this documentation,但仍然不明白要注意哪些陷阱...

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    如果您不需要过滤掉(减少)的数据,我认为这是一种正确的方法。您还可以像这样链接您的“附加操作”(这非常有效):

     mydf = mydf.query('col1 == "A"').func1(...).func2(...).func3(...)
    

    Here is a link to the documentation with lots of examples of how to use the query() method

    【讨论】:

    • 完美 - 感谢 MaxU。我几乎只是在我最后一个问题的 cmets 中直接问你;)。这个主题(参考与价值分配),一般来说是我在 Python 世界中遇到的最艰难的时期。感谢您的帮助!
    • @Sevyns,不客气!很难预测 pandas 何时会复制您的数据以及何时会在“视图”上工作 - 如果您想详细了解它,可以查看your_python_path/Lib/site-packages/pandas/ 下的来源 - 这需要时间,但是很好玩……
    猜你喜欢
    • 2018-02-09
    • 1970-01-01
    • 2014-12-27
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多