gpt4 book ai didi

python - 多索引级别上的 groupby 并删除分组级别

转载 作者:行者123 更新时间:2023-12-04 08:45:43 24 4
gpt4 key购买 nike

我正在对 Pandas 数据框进行 groupby 操作,例如可能如下所示:

import pandas as pd
import numpy as np

numbers = [0, 1, 2]
colors = ['green', 'purple']
mx = pd.MultiIndex.from_product([colors, numbers], names=['color', 'numbers'])

values = np.random.rand(6)

df = pd.DataFrame(values, mx)
df = df.drop(index=("green", 2))
(索引示例来自 pandas docs on multiindex )
然后我想在一个级别上做一个分组操作,比如 "color" ,但我不希望颜色保留为分组 series 中的索引,因为它变得多余。
for key, series in df.groupby("color"):
print(f"{key = }")
print(f"Expected index: {series.index.droplevel('color').to_list()}")
print(f"Actual index: {series.index.to_list()}")
print()
输出:
key = 'green'
Expected index: [0, 1]
Actual index: [('green', 0), ('green', 1)]

key = 'purple'
Expected index: [0, 1, 2]
Actual index: [('purple', 0), ('purple', 1), ('purple', 2)]
自分组级别 "color"每个分组都是一样的,它是多余的,我只需要 "numbers" 的级别值.
我可以像这里所做的那样将级别降低到循环内,但我想知道是否还有其他方法可以实现这一点,而我错过了?

最佳答案

IIUC,您可以简单地使用键索引您的数据帧片段:

for key, series in df.groupby("color"):
print(f'Key: {key}')
print(series.loc[key])
print('\n')
输出:
Key: green
0
numbers
0 0.913962
1 0.457205


Key: purple
0
numbers
0 0.939128
1 0.778389
2 0.715971

关于python - 多索引级别上的 groupby 并删除分组级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64339353/

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