如何将每个pandas
DataFrame值设为负数?我找不到这个答案,并认为它可以为学习如何使用pandas
DataFrame中的数据的人提供一个很好的参考。
In [1]: frame
Out[1]:
position
index
0 6
1 7
2 7
3 7
4 8
5 9
6 1
7 1
答案 0 :(得分:8)
只需- frame
(或*-1
):
In [122]: -frame
Out[122]:
position
index
0 -6
1 -7
2 -7
3 -7
4 -8
5 -9
6 -1
7 -1
如其他人所述,如果您还有非数字列,则无法使用此功能。一种选择所有数字列的方法:
frame.select_dtypes(include=[np.number])
如果已经负值应该保持负值,确实使用@Easypeasy所指出的abs()
。然后这就变成了:
- frame.select_dtypes(include=[np.number]).abs()
答案 1 :(得分:0)
像这样使用pandas.DataFrame.apply():
In [1]: f = lambda x: -x; frame.apply(f, axis=1)
Out[1]:
position
index
0 -6
1 -7
2 -7
3 -7
4 -8
5 -9
6 -1
7 -1
答案 2 :(得分:0)
您可以应用任何运算符或列。要在原地改变它,只需将列乘以-1:
>>> frame = pd.DataFrame({'position': [6,7,7,7,8,9,1,1]})
>>> frame['position'] *= -1
>>> frame
position
0 -6
1 -7
2 -7
3 -7
4 -8
5 -9
6 -1
7 -1
但在这种情况下,你甚至不需要指定一个列,因为它是你唯一的一个,所以只是:
>>> frame *= -1
如果你想创建一个副本而不是就地变异,那就更简单了:
>>> frame * -1
...或者,等同甚至更简单:
>>> -frame
答案 3 :(得分:0)
其他答案会做你想要的。但是,如果您的数据框中已经有一些负数,但希望所有数字都是负数,那么这样做:
frame.apply(lambda x: -x.abs(), axis=1)