根据其他列中的多个条件更新列字符串值
Update a columns string value based on multiple criteria in other columns
如果 cust_username 是 'BOB'
,则希望用 "BOC" 更新字段 cust_cdr_display_name 中的任何零值
originating_system_id ticker cust_cdr_display_name cust_username
BBT T 2 3/4 02/15/28 0 BOB
BBT T 2 1/4 11/15/27 0 BOB
originating_system_id ticker cust_cdr_display_name cust_username
BBT T 2 3/4 02/15/28 BOC BOB
BBT T 2 1/4 11/15/27 BOC BOB
代码:
mask = df[(
df['cust_cdr_display_name'] == 0
)
&
(
df['cust_username'] == 'BOB'
)]
df.loc[mask, 'cust_cdr_display_name'] = 'BOC'
我遇到错误:
cannot copy sequence with size 40 to array axis with dimension 2
如何让掩码标准接受多个标准?
你很接近,需要在链式布尔掩码中省略 df[]
:
mask = (
df['cust_cdr_display_name'] == 0
)
&
(
df['cust_username'] == 'BOB'
)
df <- 结构(列表(originating_system_id = c("BBT","BBT","BBT"), ticker = c("T 2 3/4 02/15/28","T 2 1/4 11/15/27","T 2 1/4 11/15/29"),
cust_cdr_display_name = c(0, 0, 4),cust_username = c("BOB","BOB","BOB")),
.Names = c("originating_system_id","ticker","cust_cdr_display_name","cust_username"),
row.names = c(NA, -3L), class = "data.frame")
打印 df 如下所示。
df
originating_system_id 代码 cust_cdr_display_name cust_username
1 BBT T 2 3/4 02/15/28 0 BOB
2 BBT T 2 1/4 11/15/27 0 BOB
3 BBT T 2 1/4 11/15/29 4 BOB
它将检查所有 cust_cdr_display_name 为 0 的索引,并取 cust_username 的值并替换为相同的索引。
df$cust_cdr_display_name[df$cust_cdr_display_name == 0] <- df$cust_username[df$cust_cdr_display_name == 0]
输出:
originating_system_id 代码 cust_cdr_display_name cust_username
1 BBT T 2 3/4 02/15/28 BOB BOB
2 BBT T 2 1/4 11/15/27 BOB BOB
3 BBT T 2 1/4 11/15/29 4 BOB
如果 cust_username 是 'BOB'
,则希望用 "BOC" 更新字段 cust_cdr_display_name 中的任何零值originating_system_id ticker cust_cdr_display_name cust_username
BBT T 2 3/4 02/15/28 0 BOB
BBT T 2 1/4 11/15/27 0 BOB
originating_system_id ticker cust_cdr_display_name cust_username
BBT T 2 3/4 02/15/28 BOC BOB
BBT T 2 1/4 11/15/27 BOC BOB
代码:
mask = df[(
df['cust_cdr_display_name'] == 0
)
&
(
df['cust_username'] == 'BOB'
)]
df.loc[mask, 'cust_cdr_display_name'] = 'BOC'
我遇到错误:
cannot copy sequence with size 40 to array axis with dimension 2
如何让掩码标准接受多个标准?
你很接近,需要在链式布尔掩码中省略 df[]
:
mask = (
df['cust_cdr_display_name'] == 0
)
&
(
df['cust_username'] == 'BOB'
)
df <- 结构(列表(originating_system_id = c("BBT","BBT","BBT"), ticker = c("T 2 3/4 02/15/28","T 2 1/4 11/15/27","T 2 1/4 11/15/29"), cust_cdr_display_name = c(0, 0, 4),cust_username = c("BOB","BOB","BOB")), .Names = c("originating_system_id","ticker","cust_cdr_display_name","cust_username"), row.names = c(NA, -3L), class = "data.frame")
打印 df 如下所示。 df
originating_system_id 代码 cust_cdr_display_name cust_username
1 BBT T 2 3/4 02/15/28 0 BOB
2 BBT T 2 1/4 11/15/27 0 BOB
3 BBT T 2 1/4 11/15/29 4 BOB
它将检查所有 cust_cdr_display_name 为 0 的索引,并取 cust_username 的值并替换为相同的索引。
df$cust_cdr_display_name[df$cust_cdr_display_name == 0] <- df$cust_username[df$cust_cdr_display_name == 0]
输出:
originating_system_id 代码 cust_cdr_display_name cust_username
1 BBT T 2 3/4 02/15/28 BOB BOB
2 BBT T 2 1/4 11/15/27 BOB BOB
3 BBT T 2 1/4 11/15/29 4 BOB