合并两列数据并设定优先级

3

我有一个Pandas数据框,其中有两列A和B。我需要一个新的合并列“result”,其中将A优先于B。我真的认为这很容易,但仍然没有解决方案。你们会怎么做呢?谢谢你们的帮助。

A   B   result
go  for go
go      go
go      go
    for for
    for for
1个回答

4
使用 combine_firstfillna:
df['result'] = df['A'].combine_first(df['B'])
print (df)
     A    B result
0   go  for     go
1   go  NaN     go
2   go  NaN     go
3  NaN  for    for
4  NaN  for    for

或者:

df['result'] = df['A'].fillna(df['B'])
print (df)
     A    B result
0   go  for     go
1   go  NaN     go
2   go  NaN     go
3  NaN  for    for
4  NaN  for    for

编辑:

要将空格替换为NaN,请使用以下方法:

df = df.replace('', np.nan)

或者:

df = df.mask(df == '')

Jezrael,感谢您的回复。实际上,我在表格中有空值而不是NaN,并且一开始无法重现您的解决方案,直到我明白我必须将所有空值转换为NaN才能使combine_first起作用。 - Vinh
我现在已经积累了足够的分数,可以投票回答了,这太酷了! - Vinh
你需要使用 df = df.replace('', np.nan) 或者 df = df.mask('')。我只能用手机回复,所以没有测试过。 - jezrael
这正是我所做的。谢谢,jezrael! - Vinh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接