Python 基于条件的函数在熊猫数据帧系列中的应用

Python 基于条件的函数在熊猫数据帧系列中的应用,python,pandas,Python,Pandas,我对熊猫不熟悉 我的数据帧: df A B first True second False third False fourth True fifth False 所需输出 A B C first True en second False third False fourth True

我对熊猫不熟悉

我的数据帧:

df

A            B
first        True 
second       False
third        False
fourth       True
fifth        False
所需输出

A            B          C
first        True       en
second       False      
third        False
fourth       True       en
fifth        False
仅当
B
列为
True
时,我才尝试对
C
列应用函数

我使用什么

if (df['B'] == True)):
    df['C'] = df['A'].apply(
        lambda x: TextBlob(x).detect_language())
但我有一个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我尝试过的

df['B'].bool()
df['B'] is True
df['B'] == 'True'
但错误依然存在,我不确定如何形成一个语句,说“只有在B列为真的情况下”


谢谢您的建议。

如果希望缺少不匹配行的值,请在
之前筛选行,仅处理
为True的行:

df['C'] = df.loc[df['B'], 'A'].apply(lambda x: TextBlob(x).detect_language())
print (df)
        A      B    C
0   first   True   en
1  second  False  NaN
2   third  False  NaN
3  fourth   True   en
4   fifth  False  NaN
或者,如果需要空字符串来表示不匹配的值,但
apply
处理所有列:

df['C'] = np.where(df['B'], df['A'].apply(lambda x: TextBlob(x).detect_language()), '')
print (df)
        A      B   C
0   first   True  en
1  second  False    
2   third  False    
3  fourth   True  en
4   fifth  False    

所以不需要以任何形式使用
==True
?我认为语句
df['B']
意味着行不是空的,而不是其中的值不是
False
@JonasPalačionis-如果有布尔值,那么就没有必要了,同样对于
df['B']==False
也使用
~df['B']