用于安排数据帧列的Panda相当于R&#39的订单()

时间:2015-07-22 03:08:56

标签: python r pandas

我在使用R几年后学习大熊猫。我想根据列中的最大值来排列数据框中列的顺序。以下R示例代码的pandas中的等价物是什么?

# R code
test = data.frame(matrix(1:9,ncol = 3))
test[,order(apply(test, 2, max),decreasing = TRUE)]

这是我在熊猫中尝试失败的原因:

# Python code
test = pd.DataFrame({"c":[1,2,3],
                     "a":[4,5,6],
                     "t":[7,8,9]})
test = test.sort_index(axis=1, ascending=False)

显然,这只是根据名称排列列。我使用c,a,t来检查这种行为。我怎样才能复制我在R中所做的事情?

1 个答案:

答案 0 :(得分:3)

我确信有一个更简洁的版本,但这里有一个选项:

public class MyBean {
  String id;
  String name;
  double amountSpent;

    @Override
    public int hashCode() {
        return id.hashCode();
    }
    @Override
    public boolean equals(Object obj) {
        if(obj!=null && obj instanceof MyBean ) {
            MyBean tmpObj = (MyBean) obj;
            if(tmpObj.id!=null && tmpObj.id.equals(this.id)) {
                tmpObj.amountSpent += this.amountSpent;
                retuen true;
            }
        }
        return false;
    }
}
  • test[test.max(columns=1).order(ascending=False).index] 找到每列中的最大值(例如R的test.max(columns=1)
  • apply(test, 2, max)就像R .order(ascending=False).index
  • order(,,, decreasing=T)重新排序列。