我是熊猫的新手
我的数据框:
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
仅在C
列为B
时,我才尝试将功能应用于列True
。
我使用的是
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的情况下”。
谢谢您的建议。
答案 0 :(得分:2)
如果想要缺少匹配行的缺失值,请过滤apply
之前的行,以仅处理具有True
s的行:
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