Как перебрать значения столбца по другому столбцу на pandas? - PullRequest
0 голосов
/ 04 мая 2020

Я хочу использовать значения Z над столбцом X. Но я хочу работать так: 0 значение индекса столбца Z будет перенесено в индекс 1 столбца X. Я хочу сдвинуть значения от 1 до 100 индекса. Для этой задачи я хочу работать с For-l oop. Как мне написать код?

Я использую pandas / pytohn

#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

1 Ответ

1 голос
/ 05 мая 2020
 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-l oop для вашего требование. Вот он:

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-l oop.

...