基于条件在熊猫数据框系列上的应用功能

时间:2020-01-06 10:33:20

标签: 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       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的情况下”。

谢谢您的建议。

1 个答案:

答案 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