问题内容
我有下一个 pandas dataframe:
x_1 x_2 x_3 x_4 col_to_replace cor_factor
1 2 3 4 x_2 1
3 3 5 1 x_1 6
2 2 0 0 x_3 0
...
我想用 cor_factor
中的值更新保存在 col_to_replace
中的名称列,并将结果保存在相应的列以及 car_factor
列中。
一些(丑陋的)解决方案可能是:
for i in len(df.shape[0]):
df[df['col_to_replace']].iloc[i] = df[df['col_to_replace']].iloc[i] - df['cor_factor'].iloc[i]
df['cor_factor'].iloc[i] = df['cor_factor'].iloc[i] - df[df['col_to_replace']].iloc[i]
这种方式绝对不省时。我正在寻找更快的解决方案。
df 的输出应该是这样的:
x_1 x_2 x_3 x_4 col_to_replace cor_factor
1 1 3 4 x_2 -1
-3 3 5 1 x_1 3
2 2 0 0 x_3 0
...
正确答案
使用 pivot
更正 x_
值和索引查找更正最后一列。由于值发生变化,请确保在修改之前进行复制:
# perform indexing lookup
# save the value for later
idx, cols = pd.factorize(df['col_to_replace'])
corr = df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx]
# pivot and subtract the factor
# ensure original order of the columns
cols = df.columns.intersection(cols, sort=false)
df[cols] = df[cols].sub(df.pivot(columns='col_to_replace',
values='cor_factor'),
fill_value=0).convert_dtypes()
# correct with the saved "corr"
df['cor_factor'] -= corr
输出:
x_1 x_2 x_3 x_4 col_to_replace cor_factor
0 1 1 3 4 x_2 -1
1 -3 3 5 1 x_1 3
2 2 2 0 0 x_3 0
以上就是根据列名更新 DF 中的值的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 如何在 Java 中求二维数组的最大值?(java怎么求二维数组的最大值)
- Java 中 invoke 方法的作用究竟是什么?(java invoke方法的作用是什么)
- Java 代理模式常见的应用场景有哪些?(java代理模式的应用场景是什么)
- 如何在 Java 中求平均值?(java怎么求平均值)
- Redis客户端自动化操作:提升效率与准确性
- Java 如何打印数组的全部内容?(java怎么打印数组全部内容)
- 在IDEA中如何配置Java开发环境?(IDEA中怎么配置Java开发环境)
- Java NoSQL 分布式部署的具体步骤是怎样的?(java nosql分布式部署如何进行)
- Java 依赖倒置原则的作用究竟是什么?(java依赖倒置的作用是什么)
- Redis客户端日志分析技巧:提升数据监控与性能优化
猜你喜欢
AI推送时光机根据列名更新 DF 中的值
后端开发2024-02-09
如何创建一个新列,其中的值是根据现有列选择的?
后端开发2024-02-22
如何在Pandas中根据条件替换列中的值
后端开发2023-09-12
Oracle中怎么更新VARCHAR列的数值
后端开发2024-04-09
Pandas中根据条件替换列中的值的四种方式
后端开发2023-01-16
在MySQL中,如何从整个列的值中删除特定前缀并更新它们?
后端开发2023-10-22
vue中父子传值双向绑定及数据更新问题的示例分析
后端开发2024-04-02
VUE通过JS修改html对象的值导致没有更新到数据中如何解决
后端开发2023-07-04
VUE直接通过JS修改html对象的值导致没有更新到数据中怎么办
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧