如何在Python中将DataFrame单元格值向下填充至下一个有效值?
解决方法
核心思路
以--------作为分组边界,将每个用户的有效行和后续NaN行划分为同一组,在组内对Name列做向前填充,保留分隔线行不变,即可实现需求。
代码实现
import pandas as pd # 构造输入的DataFrame data = { 'Name': ['John', pd.NA, pd.NA, '--------', 'Bill', pd.NA, pd.NA, pd.NA, pd.NA], 'ID': ['0123', '0127', '0163', '', '0122', '0194', '0125', '0555', '0666'] } df = pd.DataFrame(data) # 创建分组标识:每遇到分隔线就切换分组 df['group'] = (df['Name'] == '--------').cumsum() # 按分组填充Name列的空值,分隔线所在组不做填充 df['Name'] = df.groupby('group')['Name'].apply(lambda x: x.ffill() if x.iloc[0] != '--------' else x) # 删除辅助的分组列 df = df.drop(columns='group') # 输出结果 print(df.to_string(index=False))
运行结果
Name ID John 0123 John 0127 John 0163 -------- Bill 0122 Bill 0194 Bill 0125 Bill 0555 Bill 0666
内容的提问来源于stack exchange,提问作者Thiago Santos
相关产品推荐
相关产品推荐

