python - 在 pandas 数据框系列上应用基于条件的函数

标签 python pandas

我是 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/

相关文章:

python - 我如何将字符串索引转换为整数索引

python - 为什么在 DataFrame 上应用函数(使用 "apply")比在 Series 上应用函数快得多?

python - 为什么在 python 中使用 len(list) 而不是 list.len()?

python - 从具有级别的列表构建树

python - Airflow 1.10 : Wrong logfile path

python - process_request出错时django中间件的执行顺序是怎样的?

php - 如何使用 GTFS-realtime 获取日程提醒和延误?

python - 如何在 3D hist python/matplotlib 中自定义轴

python - 将图 "caracteristics"从一个类复制到另一个类

python - 如何将任意元数据分配给 pyarrow.Table/Parquet 列