[英]Applying function based on condition on pandas dataframe series
我是熊貓的新手
我的數據框:
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 列為真”時。
謝謝你的建議。
如果在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.