我是 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 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 时”。
感谢您的建议。
最佳答案
如果希望在 apply
之前没有匹配行的缺失值过滤行,以便仅处理具有 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
或者,如果不匹配的值需要空字符串,但应用
处理所有列:
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
关于python - 在 pandas 数据框系列上应用基于条件的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59610513/