Python - выбрать значение из списка на основе другого списка - PullRequest
0 голосов
/ 31 мая 2018

У меня есть датафрейм.В столбце A указан список целых чисел, в столбце B - целое число.Я хочу выбрать n-ное значение столбца A списка, где n - это число из столбца B.Поэтому, если в столбцах A есть [1,5,6,3,4], а в столбце B: 2, я хочу получить «6».

Я пробовал это:

result = [y[x] for y in df['A'] for x in df['B']

Но это не работает.Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Используйте zip с list comprehension:

df['new'] = [y[x] for x, y in zip(df['B'], df['A'])]
print (df)
                 A  B  new
0  [1, 2, 3, 4, 5]  1    2
1     [1, 2, 3, 4]  2    3
0 голосов
/ 31 мая 2018

Вы можете подать заявку, т.е.

df = pd.DataFrame({'A':[[1,2,3,4,5],[1,2,3,4]],'B':[1,2]})


                A  B
0  [1, 2, 3, 4, 5]  1
1     [1, 2, 3, 4]  2

# df.apply(lambda x : np.array(x['A'])[x['B']],1)
# You dont need np.array here, use it when the column B is also a list.
df.apply(lambda x : x['A'][x['B']],1) # Thanks @Zero 
0    2
1    3
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...