如何合并含NaN值的DataFrame两列,仅两列均非空时拼接内容
合并Pandas DataFrame两列生成符合规则的result列的解决方案
方法1:使用str.cat方法(最简洁,原生匹配规则)
Pandas的字符串拼接方法str.cat默认逻辑为:只要参与拼接的任意一方为NaN,返回结果就为NaN,刚好符合需求。
示例代码:
import pandas as pd import numpy as np # 构造测试数据 df = pd.DataFrame({ 'c1': ['a', 'b', np.nan, np.nan], 'c2': [np.nan, 'c', 'd', np.nan] }) # 生成result列 df['result'] = df['c1'].str.cat(df['c2'], sep=' ')
方法2:使用np.where显式判断(可读性更高,方便后续调整规则)
先显式判断两列同时非空,满足条件则拼接,否则返回NaN:
df['result'] = np.where( df[['c1', 'c2']].notna().all(axis=1), df['c1'] + ' ' + df['c2'], np.nan )
两种方法运行后得到的结果和示例完全一致:
| index | c1 | c2 | result |
|---|---|---|---|
| 1 | a | NaN | NaN |
| 2 | b | c | b c |
| 3 | NaN | d | NaN |
| 4 | NaN | NaN | NaN |
内容的提问来源于stack exchange,提问作者ye_c_
相关产品推荐
相关产品推荐

