系列的真值不明确

系列的真值不明确

我正在尝试使用for循环遍历DataFrame,但出现此错误:

“ ValueError:系列的真值不明确。”

我的数据框是:
python - ValueError:系列的真值不明确。在for循环中-LMLPHP

我想遍历“平台”和“ Soporte”以替换“ Soporte”值。
我正在使用这个:

for index, row in informe.iterrows():

    if informe.loc[index, 'Plataforma'] == 'Taboola':
        informe['Soporte'].str.replace('performance-prospecting_tconvergentes', 'Prospecting_Taboola_tconvergentes')
        informe['Soporte'].str.replace('performance-prospecting_tmoviles', 'Prospecting_Taboola_tmoviles')
        informe['Soporte'].str.replace('performance-prospecting', 'Prospecting_Taboola')

    elif informe.loc[index, 'Plataforma'] == 'Yahoo':
        informe['Soporte'].str.replace('performance-prospecting_tconvergentes', 'Prospecting_Yahoo_tconvergentes')
        informe['Soporte'].str.replace('performance-prospecting_tmoviles', 'Prospecting_Yahoo_tmoviles')
        informe['Soporte'].str.replace('performance-prospecting', 'Prospecting_Yahoo')


提前致谢。

最佳答案

首先,iterrows是熊猫中最慢的迭代解决方案之一,最好避免使用它,请检查this answer by pandas developer Jeff

因此,您可以创建替换字典,并使用DataFrame.loc按掩码过滤行并使用Series.replace

d1= {'performance-prospecting_tconvergentes': 'Prospecting_Taboola_tconvergentes',
     'performance-prospecting_tmoviles': 'Prospecting_Taboola_tmoviles',
     'performance-prospecting': 'Prospecting_Taboola'}

d2 = {'performance-prospecting_tconvergentes': 'Prospecting_Yahoo_tconvergentes',
      'performance-prospecting_tmoviles': 'Prospecting_Yahoo_tmoviles',
      'performance-prospecting':'Prospecting_Yahoo'}


m1 = informe['Plataforma'] == 'Taboola'
m2 = informe['Plataforma'] == 'Yahoo'

informe.loc[m1, 'Soporte'] = informe.loc[m1, 'Soporte'].replace(d1)
informe.loc[m2, 'Soporte'] = informe.loc[m2, 'Soporte'].replace(d2)

关于python - ValueError:系列的真值不明确。在for循环中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59933526/

10-12 05:34