【发布时间】:2021-01-28 00:51:48
【问题描述】:
我正在对 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" 的级别值。
我可以像这里所做的那样将关卡放到循环中,但我想知道是否还有其他我错过的方法来实现这一点?
【问题讨论】:
-
你到底想用
groupby做什么操作? -
@QuangHoang 在这种情况下,我正在遍历组来绘制它们,我需要颜色(或动物)作为标签,数字作为 x,值作为 y。但我可以想象还有其他用例。
标签: python pandas pandas-groupby multi-index