在此示例数据帧df中:
@available(*, unavailable)
将每只动物的第二行作为数据框的最快方法是什么?
答案 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()