首页 > 解决方案 > 将函数应用于熊猫数据框中的特定单元格

问题描述

我想将函数应用于熊猫数据框中的某些单元格。不是沿着列或行轴,而是跨越整个数据框,而只是一些单元格。

我存储了单元格索引(在 (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,我能找到的唯一批量应用程序函数跨轴运行,而不是逐个单元格,因此无法检查索引...)

标签: pythonpandasdataframe

解决方案


使用底层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

推荐阅读