否定列值并仅在Pandas Dataframe中的某些列中添加特定值

时间:2019-06-23 11:00:17

标签: python pandas dataframe

使用Pandas数据框df,我希望既可以删除所有行/条目在特定列中的值,又可以添加另一个值。对于每个列,要添加的该值是一个固定的累加值。

我相信我可以复制df,例如dfcopy = df,将dfcopy中的所有单元格值设置为特定数字,然后从dfcopy中减去df,但希望有一种更简单的方法。

我认为我需要进行某种修改

df.iloc[:, [0,3,4]]

例如,它的外观:

    A   B   C   D   E
0   1.0 3.0 1.0 2.0 7.0
1   2.0 1.0 8.0 5.0 3.0
2   1.0 1.0 1.0 1.0 6.0

然后仅对列(0,3,4)中的值取反,然后加10(例如),我们将得到:

    A   B   C   D   E
0   9.0 3.0 1.0 8.0 3.0
1   8.0 1.0 8.0 5.0 7.0
2   9.0 1.0 1.0 9.0 4.0

谢谢。

2 个答案:

答案 0 :(得分:2)

对于我们用mul选择的那些列,您可以先将-1add相乘,然后将10iloc相加:

df.iloc[:, [0,3,4]] = df.iloc[:, [0,3,4]].mul(-1).add(10)

     A    B    C    D    E
0  9.0  3.0  1.0  8.0  3.0
1  8.0  1.0  8.0  5.0  7.0
2  9.0  1.0  1.0  9.0  4.0

或按照注释中的 anky_91 建议:

df.iloc[:, [0,3,4]] = 10-df.iloc[:,[0,3,4]]

     A    B    C    D    E
0  9.0  3.0  1.0  8.0  3.0
1  8.0  1.0  8.0  5.0  7.0
2  9.0  1.0  1.0  9.0  4.0

答案 1 :(得分:1)

pandas非常直观,可以让您执行这些操作,

否定:

df.iloc[:, [0,2,7,10,11] = -df.iloc[:, [0,2,7,10,11]

添加常量c:

df.iloc[:, [0,2,7,10,11] = df.iloc[:, [0,2,7,10,11]+c

或更改为常数c:

df.iloc[:, [0,2,7,10,11] = c

以及您能想到的任何其他算法