Python 如何更改数据帧中的值';s列基于另一列?

Python 如何更改数据帧中的值';s列基于另一列?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据帧,我想在其中向特定列传递函数: 希望根据某些要求更改“通道”列值: if 'Facebook' or 'FacebookPaid' or 'FacebookFree' in df['utm_Campaign']: df['Channel'] = 'FB' elif 'Newsletter' in df['utm_Campaign']: df['Channel'] = 'Email' else: if 'YoutubePaid' in df['utm_Camp

我有一个数据帧,我想在其中向特定列传递函数:

希望根据某些要求更改“通道”列值:

if 'Facebook' or 'FacebookPaid' or 'FacebookFree' in df['utm_Campaign']:
    df['Channel'] = 'FB'
elif 'Newsletter' in df['utm_Campaign']:
    df['Channel'] = 'Email'
else:
   if 'YoutubePaid' in df['utm_Campaign']:
                df['Channel'] = 'Youtube Direct'
基本上,如果同一行的另一列(utm_Campaign)中包含一个单词“Facebook”,则数据帧的“Channel”列中的字符串设置为“FB”


不知道该怎么办。我是映射函数,还是执行df.replace或其他操作

您可以通过创建条件,然后使用:


你也可以这样做:

df['Channel'] = ['FB' if 'Face' in row else df.iloc[i].Channel for i,row in enumerate(df.utm_Campaign)]

以防您想使用apply:

df['Channel'] = df.apply(lambda df: \
    'FB' if df['utm_Campaign'].str.contains('Facebook') else \
    ('Email' if df['utm_Campaign'].str.contains('Newsletter') else \
    ('Youtube Direct' if df['utm_Campaign'].str.contains('YoutubePaid'))))

我会。。。但我不是OP;)哈哈;)今天是星期五;)@jezrael嘿,伙计,我正在使用你的代码和它的工作原理。不过,假设我想在上面应用你的代码,当df['Platform']列='iOS'仅限时,我该怎么做呢?
df['Channel'] = df.apply(lambda df: \
    'FB' if df['utm_Campaign'].str.contains('Facebook') else \
    ('Email' if df['utm_Campaign'].str.contains('Newsletter') else \
    ('Youtube Direct' if df['utm_Campaign'].str.contains('YoutubePaid'))))