Python 基于条件的函数在熊猫数据帧系列中的应用
我对熊猫不熟悉 我的数据帧: dfPython 基于条件的函数在熊猫数据帧系列中的应用,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
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']