为什么无法识别lambda函数中的变量

时间:2020-06-13 13:37:00

标签: python lambda

对于模糊的描述,我感到抱歉,但是我有一个简单的问题,为什么此代码可以正常工作:

df = pd.DataFrame({'city': ['London', 'New York', 'Berlin', 'Seoul', 'Paris', 'Tokyo', 'Bangkok', 'Las Vegas', 'Cape Town'], 'continent': ['Europe', 'America', 'Europe', 'Asia', 'Europe', 'Asia', 'Asia', 'America', 'Africa']})

df.groupby('continent').agg(lambda x: print(x))
8    Cape Town
Name: city, dtype: object
1     New York
7    Las Vegas
Name: city, dtype: object
3      Seoul
5      Tokyo
6    Bangkok
Name: city, dtype: object
0    London
2    Berlin
4     Paris
Name: city, dtype: object
Out[372]: 
           city
continent      
Africa     None
America    None
Asia       None
Europe     None

并且此代码给出了x尚未定义的错误(同时在先前的代码中也使用了x):

df.groupby('continent').agg(lambda x: print(i) for i in x)
Traceback (most recent call last):

  File "<ipython-input-373-7d68f6ea91a2>", line 1, in <module>
    df.groupby('continent').agg(lambda x: print(i) for i in x)

NameError: name 'x' is not defined

1 个答案:

答案 0 :(得分:1)

print(i) for i in x语法只能用作列表理解表达式的一部分。

尝试:

df.groupby('continent').agg(lambda x: [print(i) for i in x])