Заменить значения pandas в качестве индекса на другой массив

#pandas

#pandas

Вопрос:

Рассмотрим массив

 a = np.array([5, 12, 56, 36])
 

и фрейм данных pandas

 b = pandas.DataFrame(np.array([1, 3, 0, 3, 1, 0, 2]) 
 

как заменить значения на b , используя его значения в качестве индексов для a , т.Е. Предполагаемое значение:

 c = pandas.DataFrame([12, 36, 5, 36, 12, 5, 56])
 

Не могу понять это.

Ответ №1:

Один из способов — использовать apply,

 c = b.apply(lambda x: a[x])
 

Или путем индексации массива numpy и передачи значений в DataFrame,

 c = pd.DataFrame(a[b[0].values])


    0
0   12
1   36
2   5
3   36
4   12
5   5
6   56
 

Комментарии:

1. pd.DataFrame(a[b.values])

Ответ №2:

Давайте попробуем что-нибудь другое Series.get

 pd.Series(a).get(b[0])
Out[57]: 
1    12
3    36
0     5
3    36
1    12
0     5
2    56
dtype: int32
 

Ответ №3:

можно использовать карту.

 b.a.map({i:j for i,j in enumerate(a)})
0    12
1    36
2     5
3    36
4    12
5     5
6    56
Name: a, dtype: int64