python - 如何使用存储在两个列表/向量/系列中的“类似坐标”索引更改数据框单元格值?
问题描述
抱歉,如果以前有人问过这个问题,不知何故我无法找到答案。
假设我有两个值列表:
rows = [0,1,2]
cols = [0,2,3]
分别表示行和列的索引。这两个列表组合了矩阵中的坐标类型,即(0,0)、(1,2)、(2,3)。
我想使用这些坐标来更改特定单元格dataframe
而不使用循环。
在 numpy 中,这是微不足道的:
data = np.ones((4,4))
data[rows, cols] = np.nan
array([[nan, 1., 1., 1.],
[ 1., 1., nan, 1.],
[ 1., 1., 1., nan],
[ 1., 1., 1., 1.]])
但是在熊猫中,我似乎陷入了一个循环:
df = pd.DataFrame(np.ones((4,4)))
for _r, _c in zip(rows, cols):
df.iat[_r, _c] = np.nan
有没有办法使用列出类似坐标索引的向量来直接修改熊猫中的单元格?
请注意,答案不是使用 iloc 而是选择整个行和列的交集。
解决方案
非常简单!利用 pandas 构建于其之上的事实numpy
并使用DataFrame.values
df.values[rows, cols] = np.nan
输出:
0 1 2 3
0 NaN 1.0 1.0 1.0
1 1.0 1.0 NaN 1.0
2 1.0 1.0 1.0 NaN
3 1.0 1.0 1.0 1.0
推荐阅读
- php - preg_split() 期望参数 2 是字符串,给定对象
- log4net - 此平台不支持 log4net Windows 主体功能。使用 WSL2
- php - 如何在我的 wp_query() 循环中显示我的 meta_key 值
- git - 估计版本 0.1.0-beta.1 是(并且不能是)低于基本版本 1.4.0-beta.x
- mediawiki - 将 Javascript 代码(嵌入表单代码)添加到 Mediawiki 页面
- gem5 - 如何在 gem5 中使用时间戳跟踪已执行的来宾函数符号名称?
- gradle - 带有 Cucumber Gradle 的 TestNG,无法从命令行覆盖 cucumberoptions
- c# - 二维轨迹路径与 Unity 中的对象路径不匹配
- html - 即使删除任何 HTML DOM 元素,如何保持固定布局
- java - 如何在没有 IDENTITY 的情况下从 sql server 获取生成的密钥?