使pandas DataFrame中的每个数值都为负数

cli*_*val 3 python dataframe pandas

如何将每个pandasDataFrame值设为负值?我找不到这个答案,并认为它可以为学习如何使用pandasDataFrame中的数据的人提供一个很好的参考.

In [1]: frame
Out[1]:
       position
index
0          6
1          7
2          7
3          7
4          8
5          9
6          1
7          1
Run Code Online (Sandbox Code Playgroud)

jor*_*ris 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
Run Code Online (Sandbox Code Playgroud)

如其他人所述,如果您还有非数字列,则无法使用此功能.一种选择所有数字列的方法:

frame.select_dtypes(include=[np.number])
Run Code Online (Sandbox Code Playgroud)

如果已经负值应该保持负值,确实abs()如@Easypeasy所指出的那样使用.然后这变成:

- frame.select_dtypes(include=[np.number]).abs()
Run Code Online (Sandbox Code Playgroud)


aba*_*ert 6

您可以应用任何运算符或跨列应用。要就地改变它,只需将列乘以 -1:

\n\n
>>> frame = pd.DataFrame({'position': [6,7,7,7,8,9,1,1]})\n>>> frame['position'] *= -1\n>>> frame\n   position\n0        -6\n1        -7\n2        -7\n3        -7\n4        -8\n5        -9\n6        -1\n7        -1\n
Run Code Online (Sandbox Code Playgroud)\n\n

但在这种情况下,您甚至不需要指定一列,因为它是您唯一的一列,所以只需:

\n\n
>>> frame *= -1\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您想创建一个副本而不是就地变异,那就更简单了:

\n\n
>>> frame * -1\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 或者,等效且更简单:

\n\n
>>> -frame\n
Run Code Online (Sandbox Code Playgroud)\n