gpt4 book ai didi

python - 将多索引数据帧的子集除以字典中的值

转载 作者:太空宇宙 更新时间:2023-11-03 21:40:52 25 4
gpt4 key购买 nike

我有多索引 DataFrame 和一本字典。当字典键与 0 级索引对应时,我需要将 DF 中的所有数值除以字典中的数字。这是我的代码——我得到的只是 NaN 值。感谢帮助。

import pandas as pd

data = {
"ix0" : ["a", "a", "b", "b"],
"ix1" : ["a", "b", "a", "b"],
"col1" : [0, 1, 2, 3],
"col2" : [3, 2, 1, 0]
}

dict = {
"a" : 10,
"b" : 100
}

df = pd.DataFrame(data).set_index(["ix0", "ix1"])

print(df, "\n")

for letter in dict.keys():
df.loc[letter] = df.loc[letter].divide(dict[letter])

print(df)

输出:

         col1  col2
ix0 ix1
a a 0 3
b 1 2
b a 2 1
b 3 0

col1 col2
ix0 ix1
a a NaN NaN
b NaN NaN
b a NaN NaN
b NaN NaN

最佳答案

不要使用变量名dict,因为Python代码字。

通过 .items() 按字典循环,并在 MultiIndex 中选择使用 slicers :

d = {
"a" : 10,
"b" : 100
}

idx = pd.IndexSlice

for k, v in d.items():
df.loc[idx[k, :], :] /= v
#same like
#df.loc[idx[k, :], :] = df.loc[idx[k, :], :] / v

print(df)
col1 col2
ix0 ix1
a a 0.00 0.30
b 0.10 0.20
b a 0.02 0.01
b 0.03 0.00

关于python - 将多索引数据帧的子集除以字典中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868561/

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