2014-12-31 23 views
5

Pandalar çerçevesi altında en uzun dizeyle veri nasıl azaltılır? Aşağıdaki kodu denedim, ancak ValueError: invalid number of arguments olsun.Pandalar çerçevesi altında en uzun dizeyle veri nasıl azaltılır?

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

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

Ex. Girdi

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

Çıktı:

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

cevap

5

kod çalışması gerekir. BTW, f1'u başka bir lambda'un içine sarmanıza gerek yoktur. Sadece f1'u geçin. (Tam olarak aynı parametre imzası var)

>>> 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" 
İlgili konular