我有一个Pandas数据框
ACCOUNT AMOUNT STATUS
1 -2 1
2 2 0
2 -1 0
1 2 1
1 2 1
这将被转换为如下的 Dataframe
ACCOUNT STATUS COUNT>0 COUNT<0 AMOUNT>0 AMOUNT<0
1 1 2 1 4 2
2 0 1 1 2 1
所以基本上如果AMOUNT大于或小于0,就进行拆分,然后对结果进行计数和求和。
Data = pd.pivot_table(trans, values =['Status', 'AMOUNT'], index = ['ACCOUNT'], aggfunc = {'Status':np.mean, 'AMOUNT': [np.sum, 'count'] } )
4条答案
按热度按时间vecaoik11#
使用
np.sign
该函数根据值的符号返回一个
-1
/0
/1
数组。本质上,它为我提供了一种识别小于、等于或大于零的值的方便方法。我在groupby语句中使用了该函数,并使用agg
来计算值的个数,然后求和得出总数。在按3个向量分组后,最后我将创建一个3层的多索引。我将最后一层拆分,并将其包含在列中。最后一层是sign
层。额外努力模拟OP的预期输出:
在这里,我做了同样的事情。但是我添加了几个步骤,重命名列,合并层,并采取绝对值。
0x6upsns2#
这是尝试修复您的pivot_table
enyaitl33#
您可以使用
groupby
和unstack
更好地完成这一点。我还创建了一些额外的列以使事情更清楚。你得到了你的表:
dced5bon4#