如何用错位列数据填充Pandas DataFrame中的空值?
解决方案:填充错位列的空值
这个需求完全可以实现,下面是具体步骤和代码示例:
步骤1:预处理空值
首先将数据中的空格(或空字符串)转换为pandas可识别的缺失值NaN,方便后续填充操作:
import pandas as pd import numpy as np # 构造实际数据集 data = { 'Status': ['Active', 'Active', 'Active', 'Active'], 'Name': ['Tom', '', 'Tom', ''], 'Email': ['t@gmail.com', '', 't@gmail.com', ''], 'Name2': ['', 'Tim', '', 'Tim'], 'Email2': ['', 't@gmail.com', '', 't@gmail.com'] } df = pd.DataFrame(data) # 将空格/空字符串替换为NaN df = df.replace(r'^\s*$', np.nan, regex=True)
步骤2:填充错位数据
使用combine_first方法,用Name2列的值填充Name列的缺失值,用Email2列的值填充Email列的缺失值:
df['Name'] = df['Name'].combine_first(df['Name2']) df['Email'] = df['Email'].combine_first(df['Email2'])
步骤3:清理冗余列(可选)
如果不需要保留Name2和Email2列,可以直接删除:
df = df.drop(['Name2', 'Email2'], axis=1)
最终结果
处理后的DataFrame如下:
Status Name Email 0 Active Tom t@gmail.com 1 Active Tim t@gmail.com 2 Active Tom t@gmail.com 3 Active Tim t@gmail.com
(注:你的预期结果中第四行写的是Tom,但根据实际数据集,第四行的Name2是Tim,所以正确填充后应该是Tim。如果是笔误,可以根据实际情况调整逻辑。)
内容的提问来源于stack exchange,提问作者Leonardo Urbiola
相关产品推荐
相关产品推荐

