我正在开发Python中的rame df.我需要多次查询和排序结果,但在不同的列上:

for x in X:
   # query the dataframe and sort the result
   query_result = df.query(f"column_name == '{x}'").sort_values(by="other_column")
   # ... use query_result ...

我想知道我是否可以分解排序操作,以使代码运行得更快,就像这样:

# First sort the dataframe
df.sort_values(by="other_column", inplace=True)

for x in X:
   # then query it
   query_result = df.query(f"column_name == '{x}'")
   # ... use query_result, assuming it is sorted by other_column ...

在第二个代码中,我可以保证query_result被排序吗?

谢谢你的帮助

推荐答案

query不会改变行的顺序,因此如果您的输入已排序,则输出也将被排序.

不过请注意,对于您正在try 做的事情,更好的方法是使用groupby:

# ensure we only keep the values that are in X, and sort
tmp = df.loc[df['column_name'].isin(X)].sort_values(by="other_column")

for x, query_result in tmp.groupby('column_name', sort=False):
     # do something

Python相关问答推荐

如何在WTForm中使用back_plumates参考brand_id?

如何推迟对没有公钥的视图/表的反射?

如何输入提示抽象方法属性并让mypy高兴?

不同数据类型的Python成员变量不会在具有相同优先级的不同线程中更新

将numpy数组与空数组相加

在Docker中运行HAProxy时无法获得503服务

Plotly:如何更改Heatmap中彩色条的勾选文本

KNN分类器中的GridSearchCV

已删除的构造函数调用另一个构造函数

创建带有二维码的Flask应用程序,可重定向到特定端点

Python在tuple上操作不会通过整个单词匹配

pandas DataFrame GroupBy.diff函数的意外输出

查找两极rame中组之间的所有差异

如何让程序打印新段落上的每一行?

如何将Docker内部运行的mariadb与主机上Docker外部运行的Python脚本连接起来

在Mac上安装ipython

如何在turtle中不使用write()来绘制填充字母(例如OEG)

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

如何使用两个关键函数来排序一个多索引框架?

如何使用使用来自其他列的值的公式更新一个rabrame列?