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)