【问题标题】:Sort dataframes by iloc method通过 iloc 方法对数据帧进行排序
【发布时间】:2022-08-18 12:06:03
【问题描述】:

我想对列包含关键字“DE Call”之前存在的列进行排序。我有 3 个数据框,我可以在 for 循环中执行此操作吗? 现在在字典里。我想对列进行排序:x vs m(通过在 DE 调用之前提及该列)

Input: 
{0:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ABL1        NM_005157.3    0                     mRNA   
 ACVR1B      NM_004302.3    1                     mRNA  
1:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ABL1565     NM_005157.3    6                     mRNA   
 ACVR1B      NM_004302.3    0                     mRNA  
2:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ABL1868     NM_005157.3    8                     mRNA   
 ACVR1B      NM_004302.3    1                     mRNA }

Expected O/P: 
{0:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ABL1        NM_005157.3    0                     mRNA   
 ACVR1B      NM_004302.3    1                     mRNA  
1:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ACVR1B      NM_004302.3    0                     mRNA
 ABL1565     NM_005157.3    6                     mRNA   
2:
Probe Name   Acc            x vs m                DE Call of x vs m                   
 ACVR1B      NM_004302.3    1                     mRNA
 ABL1868     NM_005157.3    8                     mRNA   }
  • 请提供一个虚拟数据框和预期输出。
  • 我已经用 I/p 和 o/p 编辑了这个问题

标签: python pandas dataframe


【解决方案1】:

我让三个df分别为df1、df2、df3。

for df in (df1, df2, df3):
    column_list = df.columns.values.tolist()
    DE_index = 0
    for index in range(len(column_list)):
        if column_list[index].startswith('DE Call'):
            DE_index = index
            break

    col_to_sort = column_list[DE_index - 1]

    df = df.sort_values([col_to_sort])
    #print(df)

【讨论】:

  • 是的。太感谢了。有一个疑问, res=pd.read_excel(path,sheet_name=sheet1) for res in (FC_filter1,FC_filter2,FC_filter3): column_list = res.columns.values.tolist() DE_index = 0 for index in range(len(column_list) ): if column_list[index].startswith('DE Call'): DE_index = index break col_to_sort = column_list[DE_index - 1] print(res.sort_values([col_to_sort])) 这是避免手动输入 FC_filter1,2 的任何方法吗,3?
  • 如果 FC_filter 1, 2, 3 是您要处理的,那么您可以像代码一样放置它们。因为我不知道数据框是如何存在的,所以我只是分配了变量名 df1、df2、df3 并将它们放入元组中,因为您希望它在 for 循环中。
  • res = pd.read_excel(path, sheet_name=sheet1) 表示 res 是一个 DataFrame。在代码for res in (FC_filter1, FC_filter2, FC_filter3) 中, res 是其中的一个DataFrame(元组)。我认为你应该处理它。
猜你喜欢
  • 2017-06-30
  • 2019-09-07
  • 1970-01-01
  • 2020-07-10
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-04
相关资源
最近更新 更多