如何根据指定索引将pandas Series的值填充到DataFrame对应列
pandas指定索引位置赋值实现方法
直接使用loc标签索引器即可实现需求,核心逻辑是通过loc定位到column_a列下indices指定的索引行,再赋值对应的值即可。
为了避免pandas自动按索引对齐导致赋值失败,建议将val转为numpy数组后再赋值,写法如下:
# 核心赋值语句 df_test.loc[indices, 'column_a'] = val.values
注意事项
- 上述写法默认
val和indices的顺序是一一对应的,顺序错位会导致赋值结果不符合预期 - 如果省略
.values直接赋值val对象,pandas会尝试对齐val自身的索引和目标DataFrame的索引,你给出的示例中val默认索引是0~4,和indices指定的2、7等索引不匹配,直接赋值会得到NaN结果,因此加.values是更稳妥的写法
完整可运行示例
import pandas as pd import numpy as np df_test = pd.DataFrame(index=np.arange(4000), columns=np.arange(1)) df_test.columns = ['column_a'] val = pd.Series([0.267, 0.331, 0.486, 0.224, 0.334]) indices = pd.Series([2, 7, 9, 12, 70]) # 执行赋值 df_test.loc[indices, 'column_a'] = val.values # 打印验证结果 print(df_test.loc[indices])
运行验证代码后可以看到指定索引位置的column_a列已经被正确赋值。
内容的提问来源于stack exchange,提问作者user14753120
相关产品推荐
相关产品推荐

