Pandas数据框(df)groupby与用户定义的函数,使用df行和列

时间:2018-01-27 21:30:01

标签: python pandas dataframe user-defined

我创建了一个存储以下信息的数据帧(df),HS1是索引。

{{1}}

现在我想对这个数据帧应用两个ierations:外部由HS1和内部由HS2,以便获得两个字典(已经使用默认值声明),如下所示: 对于欧元:{' 2':20000.00,' 3':0} [键3的默认值为0] 对于美元:{' 2':-36253.84938,' 3':78693.86806}

我使用了itertuple并获得了外部迭代的以下输出:

{{1}}
  

Pandas(指数=' EUR',HS2 = 3,EffNotional_UnMG = -10082.913813053281)

     

Pandas(指数=' USD',HS2 = 2,EffNotional_UnMG = -36253.849384403635)

     

Pandas(指数=' USD',HS2 = 3,EffNotional_UnMG = 78693.868057473315)

可以使用itertuples继续进行内部迭代。

1 个答案:

答案 0 :(得分:0)

我认为循环不是必需的,请使用pivot + fillna + to_dict

d = df.pivot('HS2','HS1','EffNotional_UnMG').fillna(0).to_dict()

set_index + unstack + to_dict的替代解决方案:

d = df.set_index(['HS2','HS1'])['EffNotional_UnMG'].unstack(fill_value=0).to_dict()
print (d)
{'EUR': {'2': 0.0, '3': -10082.91381}, 'USD': {'2': -36253.84938, '3': 78693.86806000001}}