Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 我是否可以在不使用ItErrors()的情况下设置数据帧值? 原始数据集_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 我是否可以在不使用ItErrors()的情况下设置数据帧值? 原始数据集

Python 我是否可以在不使用ItErrors()的情况下设置数据帧值? 原始数据集,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,给定一个数据帧,我想要一种灵活、高效的方法,根据两列中的特定条件重置特定值 条件: 在B列中:对于值为“x”的任何行 在C列中:将这些行元素的值设置为下一行的值 预期结果 我学会了使用iterrows()(见下文)可以实现这一点 但我需要做很多次,我理解。是否有更好的pandas-y广播方式更有效地获得期望的结果?这应该可以满足您的需求: df.C[df.B == 'x'] = df.C.shift(-1) 非常感谢您的快速回复。我会试试这个。 Out[3]: A B C 0

给定一个数据帧,我想要一种灵活、高效的方法,根据两列中的特定条件重置特定值

条件:

  • 在B列中:对于值为“x”的任何行
  • 在C列中:将这些行元素的值设置为下一行的值
预期结果 我学会了使用
iterrows()
(见下文)可以实现这一点


但我需要做很多次,我理解。是否有更好的pandas-y广播方式更有效地获得期望的结果?

这应该可以满足您的需求:

df.C[df.B == 'x'] = df.C.shift(-1)

非常感谢您的快速回复。我会试试这个。
Out[3]: 
   A  B   C
0  1  a  11
1  1  a  22
2  1  a  33
3  1  x  55
4  2  b  55
5  2  b  66
6  2  b  77
7  2  x  99
8  3  c  99
# Code that produces the above outcome
for idx, x_row in df[df['B'] == 'x'].iterrows():
    df.loc[idx, 'C'] = df.loc[idx+1, 'C']
df
df.C[df.B == 'x'] = df.C.shift(-1)