获取每个组的特定索引号

时间:2019-02-08 19:35:49

标签: pandas

在此示例数据帧df中:

@available(*, unavailable)

将每只动物的第二行作为数据框的最快方法是什么?

2 个答案:

答案 0 :(得分:4)

您正在寻找nth。如果动物只有一行,则不会返回任何结果。

  

pandas.core.groupby.GroupBy.nth(n, dropna=None)

     

如果n是一个int,则从每个组中获取第n行;如果n是一个int的列表,则获取行的子集。

df.groupby(level=0).nth(1)

                 A         B         C         D
cat      -2.189615 -0.527398  0.786284  1.442453
dog       2.190704  0.607252  0.071074 -1.622508
elephant -2.536345  0.228888  0.716221  0.472490

答案 1 :(得分:2)

您可以按索引对数据进行分组,并为每个组获取索引1(第二行)上的元素

new_df = df.groupby(level=0).apply(lambda x: x.iloc[1, :])

            A           B           C           D
cat         0.089608    -1.181394   -0.149988   -1.634295
dog         0.002782    1.620430    0.622397    0.058401
elephant    1.022441    -2.185710   0.854900    0.979411

如果您希望数据框中的任何组具有单个值,则可以在这种条件下构建

new_df = df.groupby(level=0).apply(lambda x: x.iloc[1, :] if len(x) > 1 else None).dropna()