Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将数据帧中的每个数值设为负值_Python_Pandas_Dataframe - Fatal编程技术网

Python 将数据帧中的每个数值设为负值

Python 将数据帧中的每个数值设为负值,python,pandas,dataframe,Python,Pandas,Dataframe,如何使每个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 像这样使用: 只需执行-frame(

如何使每个
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
像这样使用:


只需执行
-frame
(或
*-1
):

正如其他人所指出的,如果您也有非数字列,这将不起作用。选择所有数值列的方法:

frame.select_dtypes(include=[np.number])
如果已经为负值的值应该保持为负值,那么确实要使用@Easypeasy所指出的
abs()
。这就变成了:

- frame.select_dtypes(include=[np.number]).abs()

您可以应用任何运算符或跨列应用。要对其进行适当的变异,只需将列乘以-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

其他答案将满足您的要求。但是,如果您的数据帧中已经有一些负数,但希望全部为负数,则可以这样做:


frame.apply(lambda x:-x.abs(),axis=1)

您不需要应用,只需执行
-frame.abs()
是否有方法在此基础上测试条件?例如,如果另一列的值等于“credit”,我想保持为正,但如果是“debit”,我想保持为负
>>> frame * -1
>>> -frame