使用另一个数据帧选择一个数据帧?

2024-09-27 07:25:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我经常遇到这样一个场景:我有一个数据帧,它有一个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


Tags: 数据alphanponelistbetawordsplit

热门问题