我经常遇到这样一个场景:我有一个数据帧,它有一个3级的多索引。然后,我将数据帧减少到两个级别(例如,获得一个级别的平均值或大小),并对这些平均值进行子选择
我就是没办法让它工作。我试过切片,loc(但这给了一个错误)等,但我不能得到这个工作
你是怎么做到的?示例:
import pandas as pd
import numpy as np
df1 = pd.DataFrame.from_dict({'Alpha': 'a a b b c'.split(),
'Word': 'one one three two three'.split(),
'AnotherWord':'alpha alpa beta bèta gamma'.split(),
'Random1': list(np.random.randint(0,20,5)),
'Random2':list(np.random.randint(0,200,5)),
'Random3':list(np.random.randint(0,100,5))}
)
df1.set_index(['Alpha', 'Word', 'AnotherWord'], inplace=True)
>>> df1
Random1 Random2 Random3
Alpha Word AnotherWord
a one alpha 9 123 34
alpa 18 9 77
b three beta 10 110 33
two bèta 11 153 88
c three gamma 9 130 6
filtered = df1.groupby(['Alpha', 'Word']).size()
>>> filtered
Alpha Word
a one 2
b three 1
two 1
c three 1
dtype: int64
现在我想在filtered==1上过滤:
结果应为:
Random1 Random2 Random3
Alpha Word AnotherWord
b three beta 10 110 33
two bèta 11 153 88
c three gamma 9 130 6
在本例中,我没有执行任何过滤,但我确实希望将数据添加到df1
您可以使用
transform
相关问题 更多 >
编程相关推荐