Python: создайте новый столбец и скопируйте значение из другой строки, которая является заменой текущей строки - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть фрейм данных, который имеет 3 столбца:

import pandas as pd

d = {'A':  ['left', 'right', 'east', 'west', 'south', 'north'], 'B': ['right', 'left', 'west', 'east', 'north', 'south'], 'VALUE': [0, 1, 2, 3, 4, 5]}

df = pd.DataFrame(d)

Фрейм данных выглядит следующим образом:

  A       B   VALUE
left    right   0
right   left    1
east    west    2
west    east    3
south   north   4
north   south   5

Я пытаюсь создать новый столбец VALUE_2, который должен содержать значение изпоменялась местами строка в том же кадре данных.

Например: значение вправо-влево равно 0, значение слева-справа равно 1, и я хочу, чтобы поменялись значения в новом столбце следующим образом:

  A       B   VALUE VALUE_2
left    right   0     1
right   left    1     0
east    west    2     3
west    east    3     2
south   north   4     5
north   south   5     4

Я пытался:

for row_num, record in df.iterrows():
    A = df['A'][index]
    B = df['B'][index]
    if(pd.Series([record['A'] == B, record['B'] == A).all()):
        df['VALUE_2'] = df['VALUE']

Я поражен, отзывы будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Просто более подробный ответ:

import pandas as pd

d = {'A':  ['left', 'right', 'east', 'west', 'south', 'north'], 'B': ['right', 'left', 'west', 'east', 'north', 'south'], 'VALUE': [0, 1, 2, 3, 4, 5]}

df = pd.DataFrame(d)

pdf = pd.DataFrame([])
for idx, item in df.iterrows():
    indx = list(df['B']).index(str(df['A'][idx]))
    pdf = pdf.append(pd.DataFrame({'VALUE_2': df.iloc[indx][2]}, index=[0]), ignore_index=True)

print(pdf)
data = pd.concat([df, pdf], axis=1)
print(data)
0 голосов
/ 15 ноября 2018

Использование map от Series:

df['VALUE_2'] = df['A'].map(df.set_index('B')['VALUE'])
print (df)
       A      B  VALUE  VALUE_2
0   left  right      0        1
1  right   left      1        0
2   east   west      2        3
3   west   east      3        2
4  south  north      4        5
5  north  south      5        4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...