使用iloc从DataFrame每隔n行取值填充另一列时如何避免空值
问题原因
pandas 中 Series 之间赋值默认遵循索引对齐规则:你用df2.iloc[::2]取出的是索引为 0、2、4、6 的 Series 对象,赋值给仅包含索引 0-3 的df1.col1时,只有索引 0、2 能匹配到对应值,索引 1、3 找不到匹配项就会被填充为 NULL(NaN)。
解决方法
赋值时将取出的内容转为无索引的数组或列表,即可跳过索引对齐,按位置依次填充:
# 方法1:转为numpy数组 df1['col1'] = df2.iloc[::2].values # 方法2:转为列表 df1['col1'] = df2.iloc[::2].tolist()
运行后df1.col1的值会按顺序填充为[2, 6, 10, 14],无空值。
如果你需要得到示例中给出的[2, 6, 8, 10]的期望结果,调整iloc的取值范围即可:
df1['col1'] = df2.iloc[[0,2,3,4]].values
内容的提问来源于stack exchange,提问作者Razor Sharp
相关产品推荐
相关产品推荐

