Пример данных:
import pandas as pd
import numpy as np
np.random.seed(0)
df = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'])
df['idx'] = ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'B', 'C', 'D']
print(df)
A B C idx
0 1.764052 0.400157 0.978738 A
1 2.240893 1.867558 -0.977278 B
2 0.950088 -0.151357 -0.103219 C
3 0.410599 0.144044 1.454274 D
4 0.761038 0.121675 0.443863 A
5 0.333674 1.494079 -0.205158 B
6 0.313068 -0.854096 -2.552990 C
7 0.653619 0.864436 -0.742165 B
8 2.269755 -1.454366 0.045759 C
9 -0.187184 1.532779 1.469359 D
У меня есть pandas dataframe, как указано выше.
Мне нужно создать новый столбец 'value', который для каждой строки индексирует значение в столбцев 'idx', если он существует, и возвращает 'NaN', если его нет.
Мой ожидаемый результат:
A B C idx value
0 1.764052 0.400157 0.978738 A 1.764052
1 2.240893 1.867558 -0.977278 B 1.867558
2 0.950088 -0.151357 -0.103219 C -0.103219
3 0.410599 0.144044 1.454274 D NaN
4 0.761038 0.121675 0.443863 A 0.761038
5 0.333674 1.494079 -0.205158 B 1.494079
6 0.313068 -0.854096 -2.552990 C -2.552990
7 0.653619 0.864436 -0.742165 B 0.864436
8 2.269755 -1.454366 0.045759 C 0.045759
9 -0.187184 1.532779 1.469359 D NaN