如何合并DataFrame中同名'mobilephone'列,填充空值并保留单列?
合并同名列并填充空值的解决方案
针对你有两列均名为mobilephone的DataFrame,且每行至少有一列存在手机号的情况,可以用以下方法合并为一列:
步骤1:构造示例数据(仅用于复现场景,实际可跳过)
import pandas as pd import numpy as np data = { 'mobilephone': ['999000111', '999000222', np.nan, '999000444'], 'mobilephone': ['999000111', np.nan, '999000333', '999000444'] } df = pd.DataFrame(data)
步骤2:合并并填充空值
有两种简洁的实现方式:
方式一:使用combine_first(推荐,逻辑清晰)
利用combine_first方法,用第二列的非空值填充第一列的空值,最终保留合并后的单列:
# 提取两列同名列,用第二列填充第一列空值后保留单列 df['mobilephone'] = df['mobilephone'].iloc[:, 0].combine_first(df['mobilephone'].iloc[:, 1])
方式二:使用fillna按行填充
通过fillna的bfill(向后填充)方法,按行将第一列的空值替换为第二列的对应值,再取第一列作为结果:
df['mobilephone'] = df['mobilephone'].fillna(axis=1, method='bfill').iloc[:, 0]
验证结果
执行上述代码后,打印DataFrame会得到合并后的结果:
mobilephone 0 999000111 1 999000222 2 999000333 3 999000444
内容的提问来源于stack exchange,提问作者Clive Ulyate
相关产品推荐
相关产品推荐

