首页 > 解决方案 > 根据单元格在数据框中的位置选择/操作单元格

问题描述

我有一个如下的数据框

A   B   C   D   E   F   G   H   I
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9

我想将最后 2 行中的 2 列之后的每 3 列乘以 5 以获得如下输出。

如何做到这一点?

A   B   C   D   E   F   G   H   I
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   2   3   4   5   6   7   8   9
1   10  3   4   25  6   7   40  9
1   10  3   4   25  6   7   40  9

我可以选择我需要的单元格,df.iloc[-2:,1::3] 这些单元格会导致 df 如下所示,但我无法继续进行。

B   E   H
2   5   8
2   5   8

我知道我可以用loc代替选择相同的单元格iloc,然后计算是向前的,但我无法弄清楚。由于这些变化,列名和单元格值不能使用(这里的 df 只是一个虚拟数据)

标签: pythonpandas

解决方案


您可以分配回相同的行/列选择,例如:

df.iloc[-2:,1::3] = df.iloc[-2:,1::3].mul(5)
#alternative
#df.iloc[-2:,1::3] = df.iloc[-2:,1::3] * 5
print (df)
   A   B  C  D   E  F  G   H  I
0  1   2  3  4   5  6  7   8  9
1  1   2  3  4   5  6  7   8  9
2  1   2  3  4   5  6  7   8  9
3  1   2  3  4   5  6  7   8  9
4  1   2  3  4   5  6  7   8  9
5  1  10  3  4  25  6  7  40  9
6  1  10  3  4  25  6  7  40  9

推荐阅读