gpt4 book ai didi

python - 迭代多索引数据帧(Python)并将字典分配给索引值对

转载 作者:太空宇宙 更新时间:2023-11-04 05:25:53 24 4
gpt4 key购买 nike

我对此束手无策......我有一个包含三列(aff_id、mkt 和 bkgs)的数据框,我按其中两列(aff_id 和 mkt)分组:

df_gb_aff = df.groupby(["affiliate_id", 'mkt']).sum()
df_gb_aff.sort('bkgs', ascending=False, inplace=True)

给我一​​个看起来有点像这样的多索引数据框:

                                bkgs
aff_id mkt
2508b863a1a4 bcab9d6ec630 1910.707124
6cc5f0e8c96b b7d0dbd38376 1374.924684
188e238326e4 446bb566f202 1206.589522
dbe759c691eb 1203.979908
6cc5f0e8c96b 0e9013464c4c 1203.532310

我现在想做的是遍历每个 aff_id,并生成 mkt(键)- bkgs(值)对的字典,但是由于每个 aff_id 值都有不同的 mkt 值,Python 在 df_gb_aff 时抛出错误。 loc[index_1, index_2] 不存在。

我一直在用这些获取索引:

aff_list = df_gb_aff.index.levels[0].values
mkt_list = df_gb_aff.index.levels[1].values

并尝试迭代:

for i in aff_list:
for j in mkt_list :
print df_gb_aff.loc[i,j]

任何人都有这样做的明智方法吗?

最佳答案

另一种听写理解的解决方案:

d = {idx[1]: df_gb_aff.ix[idx][0] for idx in df_gb_aff.index}

print (d)
{'446bb566f202': 1206.589522,
'bcab9d6ec630': 1910.7071239999998,
'0e9013464c4c': 1203.5323100000001,
'dbe759c691eb': 1203.979908,
'b7d0dbd38376': 1374.9246840000001}

print (d['bcab9d6ec630'])
1910.707124

如果需要循环Multiindex:

for idx in df_gb_aff.index:
print (idx)
print (df_gb_aff.ix[idx])

bkgs 1910.707124
Name: (2508b863a1a4, bcab9d6ec630), dtype: float64
('6cc5f0e8c96b', 'b7d0dbd38376')
bkgs 1374.924684
Name: (6cc5f0e8c96b, b7d0dbd38376), dtype: float64
('188e238326e4', '446bb566f202')
bkgs 1206.589522
Name: (188e238326e4, 446bb566f202), dtype: float64
('188e238326e4', 'dbe759c691eb')
bkgs 1203.979908
Name: (188e238326e4, dbe759c691eb), dtype: float64
('6cc5f0e8c96b', '0e9013464c4c')
bkgs 1203.53231
Name: (6cc5f0e8c96b, 0e9013464c4c), dtype: float64

关于python - 迭代多索引数据帧(Python)并将字典分配给索引值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38725011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com