2017-08-03 21 views
1

我在这里问了一个问题Mapping row-wise sorted dataframe to original column labels (Pandas)但我希望仅通过显示相应值的列索引来扩展此问题是大于0将按行排序的数据框映射到原始列标签(Pandas),但只有那些值大于零的映射

我有一个数据帧 -

df 
    A B C D 
0 8 3 6 2 
1 1 -3 5 2 
2 4 9 5 10 
3 2 -4 -8 -2 

我按降序和,而不是保存价值秩序的每一行,我保存相应的列名,但条件是这些将相应值为负的列名排除。

最终结果是:

df_col 
     1 2 3 4 
    0 A C B D 
    1 C D A 
    2 D B C A 
    3 A 

回答

1

您可以使用:

df = df.apply(lambda x: pd.Series(x[x > 0].sort_values(ascending=False).index), axis=1) 
print (df) 
    0 1 2 3 
0 A C B D 
1 C D A NaN 
2 D B C A 
3 A NaN NaN NaN 
+1

您可能需要添加'df.apply(拉姆达X:x.sort_values(升序= FALSE)的.index,轴= 1)'作为https://stackoverflow.com/q/45463536/2137255中的答案? – Zero

+0

@JohnGalt - 谢谢,我做到了。 – jezrael

+0

非常感谢John和Jezrael。非常感激。 –