我一直无法通过搜索找到它,但是我要做的是将数据帧的所有列求和,然后按1列(日期)分组。我的数据在整个月份都具有重复性,我想对所有列进行汇总,因此每个月都会出现一次。
a b c d
jan 1 2 1
feb 5 3 -1
mar 0 -1 0
jan 10 7 4
feb 1 5 7
mar 9 -2 8
我希望实现的输出是:
a b c d
jan 11 9 5
feb 6 8 6
mar 9 -3 8
我已经尝试过:t2.groupby(['Date'])['Number Installed'].sum().reset_index()
我可以为每列做,但我有23列,并且不想这样做。是否有对此的更简单答案?
答案 0 :(得分:2)
您可以使用GroupBy.sum
sum_month=t2.groupby('a').sum()
print(sum_month)
b c d
a
feb 6 8 6
jan 11 9 5
mar 9 -3 8
如果您希望它完全按照输出中的排序,请使用sort = False
sum_month=t2.groupby('a',sort=False).sum()
print(sum_month)
b c d
a
jan 11 9 5
feb 6 8 6
mar 9 -3 8
答案 1 :(得分:0)
从您提供的数据帧示例开始,以下代码将起作用:
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Comparator;
import models.CryptoDto;
import scala.Tuple2;
public class CryptoVolumeComparator implements Comparator<Tuple2<BigDecimal, CryptoDto>>, Serializable {
private static final long serialVersionUID = 1L;
@Override
public int compare(Tuple2<BigDecimal, CryptoDto> v1, Tuple2<BigDecimal, CryptoDto> v2) {
return v2._1().compareTo(v1._1());
}
}
答案 2 :(得分:0)
如果要汇总 所有 列,则只需要以下内容:
import pandas as pd
a = {'a':['jan','feb','mar','jan','feb','mar'],'b':[1,5,0,10,1,9],'c':[2,3,-1,7,5,-2],'d':[1,-1,0,4,7,8]}
df = pd.DataFrame(a)
grouped_df = df.groupby('a').sum())
print(grouped_df)
通过传递.sum()作为聚合函数,默认情况下它将汇总所有分组的列,如果传递某个列或数组,则它将对指定的列执行sum
。
输出:
b c d
a
feb 6 8 6
jan 11 9 5
mar 9 -3 8