Pandas 根据匹配复制值

Pandas Copy value based on Match

在一个包含 5 列的 csv 文件中,我试图在 2 列之一中复制一个值,以防与该列相关的特定字符串匹配。

首先,csv 文件如下所示

# 'Test.csv'

col1    col2    col3    col4    col5
alex    str1    47  0   54
beth    str2    94  94  0
stan    str1    18  0   18
hank    str1    37  0   37
june    str1    84  0   84
mary    str2    34  34  0

简单地说,

如果'col2'的值为'str1',则只有'col4'填充'col3'、
的值 (要么) 如果'col2'值为'str2',则只有'col5'被'col3'.

的值填充

看起来和我的答案很接近的代码在这个中,但是我无法为上面的数据修改它。

您可能需要两行代码:

df['col4'] = np.where(df.col2 == 'str1', df.col3, df.col4)
df['col5'] = np.where(df.col2 == 'str2', df.col3, df.col5)

使用:

df_copy.loc[df_copy['col2']=='str1', 'col4'] = df_copy['col3']    
df_copy.loc[df_copy['col2']=='str2', 'col5'] = df_copy['col3']

表示如果匹配条件则设置col4col5col3列的值。