如何按索引和列比较字符串值并在数据框中应用 AND OR 逻辑?
How to compare string value by index and column and apply AND OR logic within dataframe?
我有一个如下所示的数据框:
col1
0 ofcourse
1 I love the service
数据帧的第 1 行也可以具有此值:
col1
0 ofcourse
1 I hate the service
我想按行和列比较字符串的值,并能够检查第 1 行中的两个值之一。
我想创建这个逻辑:
if df.col1.loc[[0]] =='Of course!' and (df.col1.loc[[1]]=='I love the service' or df.col1.loc[[1]]=='I hate the service'):
print('good')
当我运行上面的逻辑时,我得到错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我做错了什么?
您应该删除 []
df.col1.loc[0] =='Of course!' and (df.col1.loc[1]=='I love the service' or df.col1.loc[1]=='I hate the service')
为什么会这样:
df.loc[[0]]
将 return DataFrame
,因为当你在这里设置条件时 DataFrame
,它将 return DataFrame
,这将引发错误
和
df.loc[0]
将 return Series
更多信息
type(df.loc[[0]])
<class 'pandas.core.frame.DataFrame'>
type(df.loc[0])
<class 'pandas.core.series.Series'>
我有一个如下所示的数据框:
col1
0 ofcourse
1 I love the service
数据帧的第 1 行也可以具有此值:
col1
0 ofcourse
1 I hate the service
我想按行和列比较字符串的值,并能够检查第 1 行中的两个值之一。
我想创建这个逻辑:
if df.col1.loc[[0]] =='Of course!' and (df.col1.loc[[1]]=='I love the service' or df.col1.loc[[1]]=='I hate the service'):
print('good')
当我运行上面的逻辑时,我得到错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我做错了什么?
您应该删除 []
df.col1.loc[0] =='Of course!' and (df.col1.loc[1]=='I love the service' or df.col1.loc[1]=='I hate the service')
为什么会这样:
df.loc[[0]]
将 return DataFrame
,因为当你在这里设置条件时 DataFrame
,它将 return DataFrame
,这将引发错误
和
df.loc[0]
将 return Series
更多信息
type(df.loc[[0]])
<class 'pandas.core.frame.DataFrame'>
type(df.loc[0])
<class 'pandas.core.series.Series'>