如何使用pandas框架下最长的字符串减少数据?

时间:2014-12-31 03:26:08

标签: python pandas

如何使用pandas框架下最长的字符串减少数据? 我尝试了以下代码,但获得了ValueError: invalid number of arguments

def f1(s):
    return max(s, key=len)

data.groupby('id').agg({'name':(lambda s: f1(s)) })

实施例。输入

id name
GB "United Kingdom"
GB England
US "United States"
US America

输出:

id name
GB "United Kingdom"
US "United States"

1 个答案:

答案 0 :(得分:5)

代码应该有效。顺便说一句,您不需要将f1包裹在另一个lambda中。只需通过f1。 (它们具有完全相同的参数签名)

>>> import pandas as pd
>>>
>>> def f1(s):
...     return max(s, key=len)
...
>>> data = pd.DataFrame([
...     {'id': 'GB', 'name': '"United Kingdom"'},
...     {'id': 'GB', 'name': 'England'},
...     {'id': 'US', 'name': '"United States"'},
...     {'id': 'US', 'name': 'America'},
...
... ])
>>> data.groupby('id').agg({'name': f1})
                name
id
GB  "United Kingdom"
US   "United States"