python - 将函数应用于熊猫数据框中的特定单元格
问题描述
我想将函数应用于熊猫数据框中的某些单元格。不是沿着列或行轴,而是跨越整个数据框,而只是一些单元格。
我存储了单元格索引(在 (col, row) 元组列表中,但我可以以任何格式存储,使这个问题更容易解决)。
例如,如果我的数据框是:
0 1 2
0 1 2 1
1 2 1 3
2 0 0 1
我想将my_func = lambda x : x+1
(编辑:或其他一些 my_func,例如my_func = lambda x : str(x) + str (x) +"!"
,我只是将这个作为示例,因为它很容易显示输出)应用于单元格索引[(0,1), (0,2), (1,2)]
以获得:
0 1 2
0 1 2 1
1 3 1 3
2 1 1 1
有没有更好的方法来做到这一点然后dataframe.iat[col, row]=my_func(dataframe.iloc[col, row])
在我的索引元组列表上运行一个循环?
(我想尝试创建一个函数,根据从列表创建的一组元组检查索引,并且仅在索引存在时应用 my_func ,但是apply
,我能找到的唯一批量应用程序函数跨轴运行,而不是逐个单元格,因此无法检查索引...)
解决方案
使用底层numpy
数组:
x, y = zip(*idx)
df.to_numpy()[y, x] += 1
0 1 2
0 1 2 1
1 3 1 3
2 1 1 1
推荐阅读
- c++ - 为什么打印un_ordered map和map(dictionary)的key和value会出现异常?
- android - SQL(查询)错误或缺少数据库错误
- android - 尝试使用 onSaveInstanceState() 恢复 String[][] 时出现“java.lang.NullPointerException:尝试获取空数组的长度”
- apache-spark - 如何在终端上直接提交脚本而不是使用脚本文件?
- python - python:计算在字典中写入的状态所花费的时间
- ios - UITableViewCell 布局和约束何时最终确定?
- html - DIV 包含不同数量的 div,填充和覆盖剩余空间
- sql - SQL 多表语法
- angular - Angular 6 中 npm start 或 ng serve 时的部署文件夹
- c# - 通过在选择中存储值来优化 linq 查询