【问题标题】:How to loop dataframe columns to sort the dataframe iteratively如何循环数据框列以迭代地对数据框进行排序
【发布时间】:2019-11-18 12:43:21
【问题描述】:

我需要根据不同的列对我的数据框进行排序,对于所有列,我想用一个循环来做。所以我需要类似的东西:

for j in range(nC):

    Elab1 = Elab1.sort_values([j, 13])
    Elab1 = Elab1.reset_index(drop=True)


    for i in range(L_GI-1):


        if Elab1.at[i+1, j] == Elab1.at[i, j] :


            Elab1.at[i+1, j+nC] = Elab1.at[i, j+nC] 

L_GI 和 nC 分别是我的数据框的行数和列数:Elab1,而 j 和 13 是我想用作排序索引的数据框的列的位置。

虽然这适用于循环行,但不适用于列,因为我猜想使用方法 at 我需要他们的名字。
是否有替代方法at 的方法,如我的代码所示使用?

【问题讨论】:

    标签: python pandas loops sorting dataframe


    【解决方案1】:

    只需使用iloc 而不是at:

    Elab1.iloc[i+1, j] == Elab1.iloc[i,j]
    

    【讨论】:

    • 我在这一行遇到错误: Elab1 = Elab1.sort_values([j, 13]) ,我可以用设计的列名替换 13,但是如何替换 j ?
    【解决方案2】:

    已解决:

    替换

        if Elab1.at[i+1, j] == Elab1.at[i, j] :
    
    
            Elab1.at[i+1, j+nC] = Elab1.at[i, j+nC] 
    

    与

        if Elab1.iloc[i+1, j+nC] == Elab1.iloc[i, j+nC] :
    
                Elab1.iloc[i+1, j] = Elab1.iloc[i, j] 
    

    替换

    [j, 13] 
    

    与

    [columns_names_array[j], "constant_column_name"]
    

    在哪里

    columns_names_array = [column_name in Elab1.columns()]
    

    最好的答案是给我指出正确方法的@LeoE。

    【讨论】:

    • 您也可以将columns_names_array[j] 替换为list(data.columns)[j] 这样您就不需要携带额外的变量
    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    相关资源
    最近更新 更多