如何将数组的两个值插入pandas DataFrame指定列的指定索引位置
实现pandas DataFrame指定位置赋值的解决方案
需求说明
现有pandas DataFrame和长度为2的numpy数组,需要将数组值依次写入索引为2020-12-31、列名为v2和v3的位置,替换原有值。
初始代码
import pandas as pd import numpy as np df=pd.DataFrame({'v0': [3,4,5,6,7,8,9,10,11,12,13,14], 'v1': [600, 550, 600, 600, 600, 600, 550, 500, 450, 350, np.NaN, np.NaN], 'v2': [350, 400, 450, 500, 450, 400, 450, 400, 350, 300, np.NaN, np.NaN], 'v3': [350, 350, 450, 500, 450, 400, 400, 300, 300, 250, np.NaN, np.NaN]}, index=pd.date_range('2020-03-31', '2021-02-28', freq='M')) array=np.array([305, 255])
实现代码
直接使用pandas的loc标签索引方法即可完成赋值,操作简洁且可读性高:
# 按行标签、列标签指定位置赋值 df.loc['2020-12-31', ['v2', 'v3']] = array
效果验证
赋值完成后可通过以下代码查看结果:
print(df.loc['2020-12-31', ['v2', 'v3']])
输出结果:
v2 305.0 v3 255.0 Name: 2020-12-31 00:00:00, dtype: float64
注意事项
- 列名的顺序要和numpy数组的元素顺序对应,保证赋值位置准确
- 行索引为datetime类型时,pandas会自动解析字符串格式的日期匹配对应索引,无需手动转换格式
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

