如何将长度少于DataFrame行数的NumPy数组填充至Pandas DataFrame指定列的指定行
如何将长度少于DataFrame行数的NumPy数组填充至Pandas DataFrame指定列的指定行
嘿,这问题很常见,我来给你捋清楚怎么操作!你需要把长度比DataFrame少一行的NumPy数组,从第二行开始填充到C列,刚好我有几种简单直接的方法:
首先先还原一下你的数据场景,方便我们演示:
import pandas as pd import numpy as np # 构建你的DataFrame df = pd.DataFrame({ 'A': [1, 2, 4], 'B': [2, 3, 5], 'C': [np.nan, np.nan, np.nan] }) # 你的NumPy数组 arr = np.array([10, 20])
方法一:用loc按索引直接赋值(最直观)
因为Pandas默认是0-based索引(第一行索引是0,第二行是1),我们可以直接选中从第二行到最后一行的C列,然后把数组赋值进去:
df.loc[1:, 'C'] = arr
这里loc[1:, 'C']的意思是:选中索引≥1的所有行,并且只取C列,这个范围的行数刚好和你的数组长度一致,完美匹配!
方法二:用iloc按位置选择(适配非连续索引)
如果你的DataFrame行索引不是连续的数字,那用iloc按位置来选会更稳妥:
# 获取C列的位置索引 c_col_idx = df.columns.get_loc('C') # 从第二行(位置1)开始填充C列 df.iloc[1:, c_col_idx] = arr
这种方式不依赖行索引的具体值,只看行的位置,通用性更强。
最终效果
执行完上面任意一种方法后,你的DataFrame就会变成你想要的样子:
| A | B | C |
|---|---|---|
| 1 | 2 | NaN |
| 2 | 3 | 10 |
| 4 | 5 | 20 |
备注:内容来源于stack exchange,提问作者PV8
相关产品推荐
相关产品推荐

