Pandas groupby 获取最小的字符串

Bru*_*llo 5 python pandas pandas-groupby

我有以下数据框:

df = pd.DataFrame({'id': 3*['a']+4*['b'], 'name':['al', 'qwer', 'l', 'ewdbd', 'op', 'qsde', 'knmkln']})
Run Code Online (Sandbox Code Playgroud)
id    name
 a      al
 a    qwer
 a       l
 b   ewdbd
 b      op
 b    qsde
 b  knmkln
Run Code Online (Sandbox Code Playgroud)

我想按 id 进行分组并获取名称中最短的字符串,如果有多个具有最小长度的字符串,则它可以是任何字符串,最终的数据帧将是:

id    name
a      l
b      op
Run Code Online (Sandbox Code Playgroud)

如何才能实现这一目标?

Qua*_*ang 2

对于最短字符串,您需要首先找到长度:

df.loc[df['name'].str.len().groupby(df['id']).idxmin()]
Run Code Online (Sandbox Code Playgroud)

输出:

  id name
2  a    l
4  b   op
Run Code Online (Sandbox Code Playgroud)