gpt4 book ai didi

python - 按组内的字符串长度过滤 pandas DataFrame

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:16 24 4
gpt4 key购买 nike

假设我有以下数据

import pandas as pd
df = pd.DataFrame(data=[[1, 'a'], [1, 'aaa'], [1, 'aa'],
[2, 'bb'], [2, 'bbb'],
[3, 'cc']],
columns=['key', 'text'])

key text
0 1 a
1 1 aaa
2 1 aa
3 2 bb
4 2 bbb
5 3 cc

我想做的是按 key 分组变量并按 text 的长度对每组内的数据进行排序最后得到一个 Series用于重新索引数据帧的索引值。我以为我可以做这样的事情:

df.groupby('key').text.str.len().sort_values(ascending=False).index

但是它说我需要使用apply ,所以我尝试了这个:

df.groupby('key').apply(lambda x: x.text.str.len().sort_values(ascending=False).index, axis=1)

但这告诉我 lambda得到一个意想不到的关键词:axis .

我对 pandas 比较陌生,所以我不确定该怎么做。此外,我的目标是简单地删除重复数据,以便每个 key ,我保留最长值为text的值.预期的输出是:

   key text
1 1 aaa
4 2 bbb
5 3 cc

如果有比我正在尝试的更简单的方法来做到这一点,我也愿意接受。

最佳答案

不需要中间步骤。您可以获得一个字符串长度如下的系列:

df['text'].str.len()

现在 juut groupby 键,并使用 idxmax() 返回字符串长度最大的索引值

In [33]: df.groupby('key').agg(lambda x: x.loc[x.str.len().idxmax()])
Out[33]:
text
key
1 aaa
2 bbb
3 cc

关于python - 按组内的字符串长度过滤 pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44660072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com