python pandas在groupby之后选择特定的值

2024-05-23 15:34:52 发布

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

我有groupby表:

df.groupby(['Age', 'Movie']).mean()

                  User  Raitings
Age Movie
1   1         4.666667  7.666667
    2         4.666667  8.000000
    3         2.000000  7.500000
    4         2.000000  5.500000
    5         3.000000  7.000000
18  1         3.000000  7.500000
    2         3.000000  8.000000
    3         3.000000  8.500000
25  1         8.000000  7.250000
    2         8.000000  7.500000
    3         5.500000  8.500000
    4         5.000000  7.000000
45  1         9.000000  7.500000
    2         9.000000  7.500000
    3        11.000000  7.000000
    4        11.000000  6.000000
60  1         8.000000  7.000000
    2         8.000000  9.000000
    3         8.000000  7.000000

请使用函数帮助,该函数取整数(年龄)并返回此年龄组中最低着装的电影。 Example def(1)应返回4(组年龄组中的最小服装数(1)=5.5,电影(5.5)=4)

我可以去买衣服:

^{pr2}$

但我不知道如何在特定的年龄段穿衣服?在


Tags: 函数dfage电影exampledef整数movie
3条回答

源多索引测向:

In [221]: x
Out[221]:
                 User  Raitings
Age  Movie
1.0  1       4.666667  7.666667
     2       4.666667  8.000000
     3       2.000000  7.500000
     4       2.000000  5.500000
     5       3.000000  7.000000
18.0 1       3.000000  7.500000
     2       3.000000  8.000000
     3       3.000000  8.500000
25.0 1       8.000000  7.250000
     2       8.000000  7.500000
     3       5.500000  8.500000
     4       5.000000  7.000000
45.0 1       9.000000  7.500000
     2       9.000000  7.500000
     3      11.000000  7.000000
     4      11.000000  6.000000
60.0 1       8.000000  7.000000
     2       8.000000  9.000000
     3       8.000000  7.000000

功能:

^{pr2}$

测试:

In [223]: f(x, age=1)
Out[223]: 4

如果您想要特定年龄的最低要求,您可以:

df["Age"==1]['Raitings'].min()

如果要对整个数据帧执行此操作,可以执行以下操作:

^{pr2}$

我希望有帮助

一次就把他们都弄到手了。在

df.groupby('Age').Raitings.idxmin().str[-1]

Age
1     4
18    1
25    4
45    4
60    1
Name: Raitings, dtype: int64

如果您想要一个函数,我可以使用^{}(xs表示横截面)。
默认情况下,xs将从索引的第一个级别抓取,然后删除该级别。这就方便地离开了我们想要绘制idxmin将要给我们的值的级别。在

^{pr2}$

设置
对那些试图解析这些东西的人很有用。在

txt = """\
Age  Movie       User  Raitings
1.0  1       4.666667  7.666667
     2       4.666667  8.000000
     3       2.000000  7.500000
     4       2.000000  5.500000
     5       3.000000  7.000000
18.0 1       3.000000  7.500000
     2       3.000000  8.000000
     3       3.000000  8.500000
25.0 1       8.000000  7.250000
     2       8.000000  7.500000
     3       5.500000  8.500000
     4       5.000000  7.000000
45.0 1       9.000000  7.500000
     2       9.000000  7.500000
     3      11.000000  7.000000
     4      11.000000  6.000000
60.0 1       8.000000  7.000000
     2       8.000000  9.000000"""

df = pd.read_fwf(pd.io.common.StringIO(txt))
df = df.ffill(downcast='infer').set_index(['Age', 'Movie'])

相关问题 更多 >