Python Pandas : 如何对 DataFrame 索引使用转换?

Python Pandas : How to use transform with the DataFrame index?

df = pd.DataFrame([['A',7], ['A',5], ['B',6]], columns = ['group', 'value'])

如果我想保留一行 group,最小行 value,我使用 :

df[df['value'] == df.groupby('group')['value'].transform('min')]

但是,如果我想保留索引最低的行,则以下方法不起作用:

df[df.index == df.groupby('group').index.transform('min')]

我知道我可以使用 reset_index() 并将索引作为列处理,但我可以避免这种情况吗:

df[df.reset_index()['index'] == df.reset_index().groupby('group')['index'].transform('min')]

你可以这样做:

import pandas as pd

df = pd.DataFrame([['A', 7], ['A', 5], ['B', 6]], columns=['group', 'value'])

idxs = df.reset_index().groupby('group').index.idxmin()
result = df.loc[idxs]

print(result)

输出

  group  value
0     A      7
2     B      6

您可以按索引排序(如果尚未排序),然后取每组中的第一行:

df.sort_index().groupby('group').first()