Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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,我只是想在pandas DataFrame中做一个简单的值修改操作 import pandas as pd import numpy as np x = np.linspace(1,10,10) y = x * 2 z = [-1,-2,-3,4,5,6,7,8,9,10] df = pd.DataFrame(columns=['x','y','z']) df['x'] = x df['y'] = y df['z'] = z for i in range(len(df['z'])):

我只是想在pandas DataFrame中做一个简单的值修改操作

import pandas as pd
import numpy as np

x = np.linspace(1,10,10)
y = x * 2
z = [-1,-2,-3,4,5,6,7,8,9,10]

df = pd.DataFrame(columns=['x','y','z'])
df['x'] = x
df['y'] = y
df['z'] = z

for i in range(len(df['z'])):
    if df['z'].iloc[i] < 0:
        df['x'].iloc[i] *= -1
        df['y'].iloc[i] *= -1
        df['z'].iloc[i] *= -1
将熊猫作为pd导入
将numpy作为np导入
x=np.linspace(1,10,10)
y=x*2
z=[-1,-2,-3,4,5,6,7,8,9,10]
df=pd.DataFrame(列=['x'、'y'、'z'])
df['x']=x
df['y']=y
df['z']=z
对于范围内的i(len(df['z']):
如果df['z'].iloc[i]<0:
df['x'].iloc[i]*=-1
df['y'].iloc[i]*=-1
df['z'].iloc[i]*=-1
但是它警告:设置为CopyWarning: 试图在数据帧切片的副本上设置值 我不知道在这种情况下是如何使用链式作业的

它给了我正确的答案,但速度要慢得多


感谢如果循环速度较慢,那么最好避免它,如果可能的话,使用矢量化熊猫函数

我认为您可以使用和,如果条件为
乘以
-1

df = df.mask(df['z'] < 0, df.mul(-1))
print (df)
      x     y   z
0  -1.0  -2.0   1
1  -2.0  -4.0   2
2  -3.0  -6.0   3
3   4.0   8.0   4
4   5.0  10.0   5
5   6.0  12.0   6
6   7.0  14.0   7
7   8.0  16.0   8
8   9.0  18.0   9
9  10.0  20.0  10
df.loc[df['z'] < 0] *= -1
print (df)
      x     y   z
0  -1.0  -2.0   1
1  -2.0  -4.0   2
2  -3.0  -6.0   3
3   4.0   8.0   4
4   5.0  10.0   5
5   6.0  12.0   6
6   7.0  14.0   7
7   8.0  16.0   8
8   9.0  18.0   9
9  10.0  20.0  10