python - 如何有效地传输数据框中的值?
问题描述
我想问一下,是否有比逐个输入所有单元格位置更有效的方法在数据框中传输值。
假设有一组具有某些输入的单元格 (120, 50:100),而还有另一组空单元格 (0:50, 110)。两组单元格的大小均为 50 * 1(总共 50 个单元格),但列数和行数不同。
在这种情况下,我想进行两个转换:
第一次转换:
将单元格 (120, 50:100) 中的输入转移到单元格 (0:50, 110),使得单元格 (0, 110) = 单元格 (120, 50),单元格 (1, 110) = 单元格 ( 120, 51), ..., 单元格 (49, 110) = 单元格 (120, 99)。
第二次变换:
将单元格 (120, 50:100) 中的输入转移到单元格 (0:50, 110) 中,使得单元格 (0, 110) = 单元格 (120, 99),单元格 (1, 110) = 单元格 ( 120, 98), ..., 单元格 (49, 110) = 单元格 (120, 50)
除了df.iloc[a, b] = df.iloc[c, d]
在每个转换中直接通过命令分配所需的值 50 次之外,还有没有更有效的方法来执行上述转换。非常感谢。
解决方案
替换 using iloc
, iedf.iloc[:50, 110] = df.iloc[120, 50:100]
可能不起作用,因为iloc
在这种情况下返回 aSeries
并且Series
记住索引(在这种情况下为列名)。在这种情况下,assignmen 运算符=
总是替换相同索引的元素。因此,由于两个系列的索引不同(df.iloc[:50, 110]
以行名或索引作为索引,df.iloc[120, 50:100]
以列名或索引作为索引)替换出错。
如果您打印df.iloc[:50, 110].index
和 ,您可以看到这一点df.iloc[120, 50:100].index
。仅在那些索引匹配的地方进行替换,这不太可能是您的情况。
为了实现你想要的,你可以使用底层numpy
数组,它不会对索引进行任何检查。
df.values[:50, 110] = df.values[120, 50:100]
并颠倒分配的顺序:
df.values[:50, 110] = df.values[120, 50:100:-1]
推荐阅读
- python-3.x - python中的嵌套for循环没有完全迭代
- git - Bitbucket 管道构建 dist 并使用 git 推送构建以进行部署
- javascript - 为什么我的游戏在不应该结束的时候结束了?
- python - 如何使用 Python 检查时区是否存在于 unicode 字符串中
- scala - 从 HBase 批量删除记录 - 如何将 RDD 转换为 Array[Byte]?
- arrays - 二进制向量中的数字 0 和 1 块
- javascript - 使用 Ramda 从多个数组中循环获取前 X 个项目
- django - 显示来自 Django 数据库的数据
- java - 给出意外返回的 Java 方法
- google-analytics - 我们可以增加 GA 批量获取 API 的最大请求对象数吗