如何通过比较pandas中的数据值和类别来提取行

时间:2017-04-30 11:24:40

标签: python pandas

我有一个如下的数据框

1320    A   2010    455
1325    B   2010    52
1336    A   2011    148
1341    B   2011    37
1352    A   2012    57
1357    B   2012    8

我想在同一年获得两组之间的差异,例如

1 2010 403
2 2011 111
3 2012 49

目前,我只是移动数据帧并进行减法,但显然它只适用于干净的格式化数据。我想知道如何通过检查年份和组ID

来获得减法方法

1 个答案:

答案 0 :(得分:1)

这将有效:

import numpy as np
import pandas as pd

df = pd.DataFrame()

df['group'] = ['A','B']*3
df['year'] = [2010,2010,2011,2011,2012,2012]
df['value'] = [455,52,148,37,57,8]

df.loc[df.group=='B','value']*=-1

dfNew = df.groupby('year').sum()

print dfNew

如果我们从 df 开始:

  group  year  value
0     A  2010    455
1     B  2010     52
2     A  2011    148
3     B  2011     37
4     A  2012     57
5     B  2012      8

我们得到 dfNew

      value
year       
2010    403
2011    111
2012     49