如何通过 pandas 迭代另一列的列值?
How to iterate column values over the other column by pandas?
我想在 X 列上使用 Z 的值。但我想以这种方式工作:Z 列的 0 索引值将转移到 X 列的索引 1。我想将值从 1 移到 100 索引。对于此任务,我想使用 For 循环。我该如何编写代码?
我正在使用pandas/python
#Index X Y Z
#0 Non Non 10
#1 Non Non 20
#2 Non Non 30
#3 Non Non 40
#4 Non Non 50
#5 Non Non 60
#6 Non Non 70
#7 Non Non 80
#8 Non Non 90
#9 Non Non 100
#10 Non Non 110
df['X'] = df['Z'].shift(1)
Index X Y Z
0 0 NaN NaN 10
1 1 10.0 NaN 20
2 2 20.0 NaN 30
3 3 30.0 NaN 40
4 4 40.0 NaN 50
5 5 50.0 NaN 60
6 6 60.0 NaN 70
7 7 70.0 NaN 80
8 8 80.0 NaN 90
9 9 90.0 NaN 100
这是更新版本(Y 也更新):
df['X'] = df['Z'].shift(1)
df['Y'] = df['Z'].shift(2)
Index X Y Z
0 0 NaN NaN 10
1 1 10.0 NaN 20
2 2 20.0 10.0 30
3 3 30.0 20.0 40
4 4 40.0 30.0 50
5 5 50.0 40.0 60
6 6 60.0 50.0 70
7 7 70.0 60.0 80
8 8 80.0 70.0 90
9 9 90.0 80.0 100
我无法理解您为什么坚持使用 for-loop 解决方案来满足您的要求。这是:
def update_X_Y(frame):
for x in range(frame.shape[0]):
frame.loc[x+1,'X'] = frame.loc[x,'Z']
frame.loc[x+2,'Y'] = frame.loc[x,'Z']
## Calling the function:
update_X_Y(df)
我不会使用for循环。
我想在 X 列上使用 Z 的值。但我想以这种方式工作:Z 列的 0 索引值将转移到 X 列的索引 1。我想将值从 1 移到 100 索引。对于此任务,我想使用 For 循环。我该如何编写代码?
我正在使用pandas/python
#Index X Y Z
#0 Non Non 10
#1 Non Non 20
#2 Non Non 30
#3 Non Non 40
#4 Non Non 50
#5 Non Non 60
#6 Non Non 70
#7 Non Non 80
#8 Non Non 90
#9 Non Non 100
#10 Non Non 110
df['X'] = df['Z'].shift(1)
Index X Y Z
0 0 NaN NaN 10
1 1 10.0 NaN 20
2 2 20.0 NaN 30
3 3 30.0 NaN 40
4 4 40.0 NaN 50
5 5 50.0 NaN 60
6 6 60.0 NaN 70
7 7 70.0 NaN 80
8 8 80.0 NaN 90
9 9 90.0 NaN 100
这是更新版本(Y 也更新):
df['X'] = df['Z'].shift(1)
df['Y'] = df['Z'].shift(2)
Index X Y Z
0 0 NaN NaN 10
1 1 10.0 NaN 20
2 2 20.0 10.0 30
3 3 30.0 20.0 40
4 4 40.0 30.0 50
5 5 50.0 40.0 60
6 6 60.0 50.0 70
7 7 70.0 60.0 80
8 8 80.0 70.0 90
9 9 90.0 80.0 100
我无法理解您为什么坚持使用 for-loop 解决方案来满足您的要求。这是:
def update_X_Y(frame):
for x in range(frame.shape[0]):
frame.loc[x+1,'X'] = frame.loc[x,'Z']
frame.loc[x+2,'Y'] = frame.loc[x,'Z']
## Calling the function:
update_X_Y(df)
我不会使用for循环。