python - 如何用numpy数组中的相应值替换每行中特定索引中的值
问题描述
我的数据框如下所示:
datetime1 datetime2 datetime3 datetime4
id
1 5 6 5 5
2 7 2 3 5
3 4 2 3 2
4 6 4 4 7
5 7 3 8 9
我有一个像这样的numpy数组:
index_arr = [3, 2, 0, 1, 2]
这个 numpy 数组分别指的是我要替换的每一行中的索引。我想在替换中使用的值在另一个 numpy 数组中:
replace_arr = [14, 12, 23, 17, 15]
以便更新的数据框如下所示:
datetime1 datetime2 datetime3 datetime4
id
1 5 6 5 14
2 7 2 12 5
3 23 2 3 2
4 6 17 4 7
5 7 3 15 9
快速进行此替换的最佳方法是什么?我尝试使用 enumerate 和 iterrows 但无法使语法正常工作。将不胜感激任何帮助 - 谢谢
解决方案
这是一种方法np.put_along_axis
-
In [50]: df
Out[50]:
datetime1 datetime2 datetime3 datetime4
1 5 6 5 5
2 7 2 3 5
3 4 2 3 2
4 6 4 4 7
5 7 3 8 9
In [51]: index_arr = np.array([3, 2, 0 ,1 ,2])
In [52]: replace_arr = np.array([14, 12, 23, 17 ,15])
In [53]: np.put_along_axis(df.to_numpy(),index_arr[:,None],replace_arr[:,None],axis=1)
In [54]: df
Out[54]:
datetime1 datetime2 datetime3 datetime4
1 5 6 5 14
2 7 2 12 5
3 23 2 3 2
4 6 17 4 7
5 7 3 15 9
推荐阅读
- linux - 无法在 Raspberrypi 中使用 crontab 在启动时启动 gui jar
- alpha - 使用 qemu 创建 alpha 架构虚拟机时遇到问题
- javascript - 如何使用 post 以对象格式将数据发送到服务器
- oracle - 嵌套视图的执行顺序
- elasticsearch - Elasticsearch-js 没有关于 count(...) 的现有文档 - 任何示例/其他文档?
- reactjs - 在反应中使用href时,它通过react-router链接路径组合
- django - 已经使用不同的查询集看到了查找
- react-router-v4 - 使用 react-router 将多个 URL 参数作为道具传递?
- c++ - 直接从 std::fstream 读取
- python - 从大型 Pandas DataFrame 中获取连续值为 0 的行的索引