假设我有df:
df = pd.DataFrame([[1, 2, 1], [1, 3, 2], [4, 6, 3], [4, 3, 4], [4, 4, 5]], columns=['A', 'B', 'C'])
A B C
0 1 2 1
1 1 3 2
2 4 6 3
3 4 3 4
4 4 4 5
我想对'A'进行分组,并对'B','C'的子致命帧进行一些计算和操作,但是我找不到方法,只能在单列上找到方法。 因此,如果我将每个子数据帧都称为SubDF,我将尝试做的事情:
SubDF = SubDF.sort_values(by=['B','C'], ascending=[False,True])
反转C列,取总和,然后再次反转,我认为是这样的:
SubDF['cum_C'] = SubDF.loc[::-1, 'C'].cumsum()[::-1]
我想做的是将每个'A'转换为.sort_values(by = ['B','C'] ascending = [False,True])然后是df.val1.cumsum() 计算“ C”的水平
SubDF['per_C'] = 100*SubDF.cum_C/SubDF.C.sum()
,并且对于每个SubDF,第一行的cum_C都低于90%,因此最终结果将类似于:
df:
A B C cum_C per_C
0 1 2 1 1 33.333
1 2 4 5 9 75.000
我该怎么做?
谢谢