gpt4 book ai didi

python - 如何将 pd.Series 添加到多索引 DataFrame 的子集?

转载 作者:行者123 更新时间:2023-12-04 15:00:14 25 4
gpt4 key购买 nike

我有一个由以下人员创建的多索引数据框:

arrays = [['task_1','task_2', 'task_2'],['accuracy', 'accuracy', 'precision']]
mux = pd.MultiIndex.from_arrays(arrays, names=('task', 'metric'))
data = [[4., 5., 6.], [1., 1., 1.]]
res = pd.DataFrame(data, columns=mux, index=['total', 'counts']).transpose()

>>> res
total counts
task metric
task_1 accuracy 4.0 1.0
task_2 accuracy 5.0 1.0
precision 6.0 1.0

现在我想更新 total task_2 栏目通过添加 [0.1, 0.2]task_2.accuracytask_2.precision分别是:

update = pd.Series([0.1, 0.2], index=['accuracy', 'precision'])
res.total.task_2 += update

>>> res
total counts
task metric
task_1 accuracy 4.0 1.0
task_2 accuracy NaN 1.0
precision NaN 1.0

为什么我得到 NaN ?向another question学习,我还尝试了两种方法来尝试匹配 update 之间的索引和 res.total.task_2 .但是,它们都不适用于我的情况。

res.total.task_2 += update.values
# -OR-
res.total.task_2 += update.reset_index(drop=True, inplace=True)

最佳答案

我们有一个添加级别的选项,我们可以将其与 series.xs 一起使用以仅在所需的第 0 级别添加,然后重新索引并添加:

res['total'] = (res['total'].xs("task_2",drop_level=False)
.add(update,level=1).reindex(res.index)
.fillna(res['total']))
print(res)

total counts
task metric
task_1 accuracy 4.0 1.0
task_2 accuracy 5.1 1.0
precision 6.2 1.0

关于python - 如何将 pd.Series 添加到多索引 DataFrame 的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67077597/

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