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']
表示如果匹配条件则设置col4
或col5
为col3
列的值。
在一个包含 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']
表示如果匹配条件则设置col4
或col5
为col3
列的值。