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

如何按指定顺序重新排列列表中的DataFrame?

调整列表中DataFrame的顺序

假设你的lbsl_lst已包含目标的4个DataFrame,仅顺序不符合要求,可通过以下方式调整:

方法1:已知原列表索引

若清楚每个目标DataFrame在原lbsl_lst中的位置,直接按需求重新构造列表即可。比如原列表中:

  • JP002A-0002在索引1
  • JP002A-0003在索引2
  • JP007A-0001在索引0
  • JP002A-0001在索引3

执行代码:

lbsl_lst = [
    lbsl_lst[1],  # JP002A-0002
    lbsl_lst[2],  # JP002A-0003
    lbsl_lst[0],  # JP007A-0001
    lbsl_lst[3]   # JP002A-0001
]

此时lbsl_lst[2]对应JP007A-0001。若需lbsl_lst[3]对应它,只需调整目标顺序为[JP002A-0002, JP002A-0003, JP002A-0001, JP007A-0001]后重新构造列表。

方法2:按DataFrame标识匹配排序

若不知道原索引,但每个DataFrame有唯一标识(如name属性或专属标识列),可通过匹配排序:

场景A:DataFrame设置了name属性

假设每个df的name属性对应JP编号(如df.name = "JP002A-0002"):

target_order = ["JP002A-0002", "JP002A-0003", "JP007A-0001", "JP002A-0001"]
lbsl_lst = [df for tid in target_order for df in lbsl_lst if df.name == tid]

场景B:DataFrame含标识列

若每个df有一列(如code)存储JP编号,且该列值统一:

target_order = ["JP002A-0002", "JP002A-0003", "JP007A-0001", "JP002A-0001"]
new_lbsl_lst = []
for tid in target_order:
    for df in lbsl_lst:
        if df['code'].iloc[0] == tid:
            new_lbsl_lst.append(df)
            break
lbsl_lst = new_lbsl_lst

注:若需lbsl_lst[3]对应JP007A-0001,修改target_order为["JP002A-0002", "JP002A-0003", "JP002A-0001", "JP007A-0001"]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:45:31