You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按DataFrame最后一行price_change值对DataFrame字典进行排序

实现方法

Python 3.7及以上版本的原生字典默认保留插入顺序,你可以直接通过sorted()函数对字典的键值对排序,核心逻辑是取出每个DataFrame最后一行的price_change值作为排序依据。

完整代码示例

第一步:构造测试数据(你有真实数据可跳过这一步)

import pandas as pd

# 构造测试用的DataFrame
btc_df = pd.DataFrame({
    "price": [10, 15, 30, 10],
    "price_change": [0, 50, 100, -50]
})
eth_df = pd.DataFrame({
    "price": [20, 25, 40, 60],
    "price_change": [0, 25, 60, 50]
})
doge_df = pd.DataFrame({
    "price": [0.1, 0.2, 0.5, 0.3],
    "price_change": [0, 100, 150, -40]
})

symbols = {"BTC": btc_df, "ETH": eth_df, "DOGE": doge_df}

第二步:按要求排序

# 按最后一行price_change升序排序
sorted_symbols = dict(sorted(
    symbols.items(),
    key=lambda item: item[1]["price_change"].iloc[-1]
))

# 如果需要降序排序,加上reverse=True参数即可
# sorted_symbols = dict(sorted(
#     symbols.items(),
#     key=lambda item: item[1]["price_change"].iloc[-1],
#     reverse=True
# ))

第三步:验证排序结果

for k, df in sorted_symbols.items():
    print(f"{k}: 最后一行price_change = {df['price_change'].iloc[-1]}")

输出结果:

BTC: 最后一行price_change = -50
DOGE: 最后一行price_change = -40
ETH: 最后一行price_change = 50

注意事项

  • 如果你使用的Python版本低于3.7,原生字典不保留插入顺序,建议用collections.OrderedDict存储排序结果:
from collections import OrderedDict
sorted_symbols = OrderedDict(sorted(
    symbols.items(),
    key=lambda item: item[1]["price_change"].iloc[-1]
))
  • 运行前请确认每个DataFrame都存在price_change字段,且不是空表,避免取最后一行时报索引错误。

内容的提问来源于stack exchange,提问作者fagner nunes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:36:03