我在使用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中所做的事情?
答案 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)
重新排序列。