簡體   English   中英

在熊貓數據幀系列上應用基於條件的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM