Mat*_*ttB 3 python pivot-table pandas
我有一个pandas pivot_table,可以在两行中聚合2个数据集.我想添加另一列,即两行现有列中的聚合值之间的差异.有没有办法直接在pivot_table()调用中实现它?我知道返回的数据帧是一个数据帧,所以我可以通过其他方式计算它,但只是好奇是否有更有效的方法.
我的数据的简单示例:
Set Type Val
S1 A 1
S1 B 2
S1 B 3
S2 A 4
S2 B 5
S2 C 6
Run Code Online (Sandbox Code Playgroud)
使用以下代码,其中数据是我的df
piv=pivot_table(data,'Val',rows='Type',cols='Set',aggfunc=sum,fill_value=0.0)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容
S1 S2
A 1 4
B 5 5
C 0 6
Run Code Online (Sandbox Code Playgroud)
我希望输出
S1 S2 Diff
A 1 4 3
B 5 5 0
C 0 6 6
Run Code Online (Sandbox Code Playgroud)
要不就
Diff
A 3
B 0
C 6
Run Code Online (Sandbox Code Playgroud)
简单.数据帧(以及一般的矩阵)使得一次操作多个元素变得容易.
定义要应用的功能.
>>> def abs_diff(x, y):
>>> return abs(x - y)
Run Code Online (Sandbox Code Playgroud)
然后,应用它.
>>> df['Diff'] = abs_diff(df['S1'], df['S2'])
>>> df
S1 S2 Diff
A 1 4 3
B 5 5 0
C 0 6 6
Run Code Online (Sandbox Code Playgroud)
当然,如果您只想呈现特定列: -
>>> df['Diff']
A 3
B 0
C 6
Name: Diff
Run Code Online (Sandbox Code Playgroud)
(>>>当然是python shell提示符)
| 归档时间: |
|
| 查看次数: |
3065 次 |
| 最近记录: |