Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧中的Lambda函数-“;或;陈述_Python_Pandas_Dataframe - Fatal编程技术网

Python 数据帧中的Lambda函数-“;或;陈述

Python 数据帧中的Lambda函数-“;或;陈述,python,pandas,dataframe,Python,Pandas,Dataframe,在Python3中,我试图将lambda函数应用于特定的DataFrame列。 在最初的专栏(‘fuelType’)中,我有几种类型的燃料,但我想创建一个新的专栏(‘fuel’),其中只显示3种类型—>‘高级汽油’、‘普通汽油’(这两种是目前最常见的),并将所有其他类型的燃料纳入‘其他’类别。最后,类似这样的方法效果很好: df['fuel']=df['fuelType'].apply(lambda x:x如果x.split()[0]在['Premium'、'Regular']或'Other'中

在Python3中,我试图将lambda函数应用于特定的DataFrame列。 在最初的专栏(‘fuelType’)中,我有几种类型的燃料,但我想创建一个新的专栏(‘fuel’),其中只显示3种类型—>‘高级汽油’、‘普通汽油’(这两种是目前最常见的),并将所有其他类型的燃料纳入‘其他’类别。最后,类似这样的方法效果很好:

df['fuel']=df['fuelType'].apply(lambda x:x如果x.split()[0]在['Premium'、'Regular']或'Other'中)

然而,我不完全确定为什么这样的事情不起作用:

df['fuel']=df['fuelType'].apply(lambda x:x如果x.split()[0]='Premium'或'Regular'其他')

在第二种情况下,新列似乎与旧列相同,但当我使用此代码时:

df['fuel']=df['fuelType'].apply(lambda x:x如果x.split()[0]='Premium'否则'Other')

正如我所预期的那样,这意味着新专栏显示了“高级汽油”和“其他”类别。所以看起来我把“或”语句搞砸了,但不知道是什么。。。 你能帮我注意一下我遗漏了什么吗:)


提前谢谢你

问题在于
不是比较的一部分。
如果你看到
x.split()[0]=“高级”或“普通”

你认为
x.split()

但是Python认为
(x.split()[0]=“高级”)或“常规”

这个表达是什么意思

为您提供第一个计算结果为true的表达式,对于字符串,该表达式表示除空字符串以外的所有内容

所以你要么
True或'someString'
哪个为True或
False或'someString'
哪个为
'someString'
哪个也是True

解决方案:

x.split()