Python中数据帧中的值聚合?

Python中数据帧中的值聚合?,python,pandas,dataframe,Python,Pandas,Dataframe,我有DataFrame,合同如下: df = pd.DataFrame ({"ID" : ["1", "2", "1", "2"], "currency" : ["USD", "USD", "EUR", "CHF"],

我有DataFrame,合同如下:

df = pd.DataFrame ({"ID" : ["1", "2", "1", "2"], 
                    "currency" : ["USD", "USD", "EUR", "CHF"],
                     "amount" : [100, 200, 400, 500]})
我需要计算:

col1采用欧元货币的合同数量 col2非欧元货币的合同数量 col3欧元合同金额 4/col4非欧元货币的合同金额 为了更精确,我需要如下所示的数据帧:

用于新列lambda用于处理在使用聚合总和分配之前计数的新列:

cols = ['col1','col2','col3','col4']
df = (df.assign(col1 = df.currency == 'EUR',
                col2 = df.currency != 'EUR',
                col3 = lambda x: df.amount.mask(x.col2, 0),
                col4 = lambda x: df.amount.mask(x.col1, 0))
        .groupby(df['ID'])[cols]
        .sum()
        .reset_index())
print (df)
  ID  col1  col2  col3  col4
0  1     1     1   400   100
1  2     0     2     0   700