Python:如何将DataFrame列的有效值填充为对应行的标签
解决方案
直接用Pandas的ffill()(前向填充)方法就能搞定,不过要先把字符串类型的'nan'转成真正的缺失值,具体步骤如下:
- 替换字符串缺失值:先把Col1里的字符串'nan'换成Pandas能识别的
np.nan - 前向填充有效值:对处理后的Col1使用
ffill(),自动把上一个有效值向下填充到下一个有效值之前的所有行
完整代码示例
import pandas as pd import numpy as np # 原始数据 data = {'Col1': ['Alabama', 'nan', 'nan', 'nan', 'Wyoming', 'nan', 'nan', 'nan'], 'Col2': ['nan', 1, 2, 3, 'nan', 1, 2, 3]} df = pd.DataFrame(data) # 1. 将字符串'nan'转为真实缺失值 df['Col1'] = df['Col1'].replace('nan', np.nan) # 2. 前向填充Col1的有效值 df['Col1'] = df['Col1'].ffill() # 可选:如果Col2的'nan'也需要转成缺失值,同样处理 df['Col2'] = df['Col2'].replace('nan', np.nan) print(df)
输出结果
Col1 Col2 0 Alabama NaN 1 Alabama 1.0 2 Alabama 2.0 3 Alabama 3.0 4 Wyoming NaN 5 Wyoming 1.0 6 Wyoming 2.0 7 Wyoming 3.0
如果你的真实数据里Col1的缺失值已经是np.nan(不是字符串),可以跳过第一步直接用df['Col1'] = df['Col1'].ffill()。
内容的提问来源于stack exchange,提问作者Shazriki
相关产品推荐
相关产品推荐

