如何通过 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循环。