Найти номер строки в столбце, где он соответствует любому другому значению в столбце другого кадра данных - PullRequest
2 голосов
/ 03 марта 2020

У меня есть код:

import pandas as pd
import numpy as np

arm_1_and_m1_df = pd.DataFrame({ 'record_id': [1, 4, 3, np.nan],
                   'two': [1, 2, np.nan , 4]
                 })

redcap_final_arm1_data = pd.DataFrame({ 'record_id': [1, 2, 3, 4, 5, 6, 7, 8, 9, np.nan],
                   'two': [1, 2, 3, 4, 5, 6, 7, 8, 9, np.nan]
                 })

ahk_ids_new=[]
for items in arm_1_and_m1_df['record_id'].iteritems():     # https://www.geeksforgeeks.org/python-pandas-series-iteritems/
    ahk_ids_new.append(np.where(redcap_final_arm1_data['record_id'] == items))    # https://stackoverflow.com/questions/48519062/rs-which-and-which-min-equivalent-in-python

После выполнения кода выше и после ahk_ids_new содержимое ahk_ids_new равно:

[(array([], dtype=int64),),
 (array([], dtype=int64),),
 (array([], dtype=int64),),
 (array([], dtype=int64),)]

Значения в redcap_final_arm1_data['record_id'] уникальны .

Вопрос: Я хочу получить все номера строк (индекс) redcap_final_arm1_data['record_id'] в ahk_ids_new, где redcap_final_arm1_data['record_id'] имеет то же значение, что и любые значения в arm_1_and_m1_df['record_id']. Как это сделать?

Ожидаемый вывод (содержимое) ahk_ids_new:

Out[57]: [0, 3, 2, 9]

Если есть лучший способ сделать то, что мне нужно, с фреймами данных из моего кода, пожалуйста, опубликуйте свой лучший вариант вместо исправления моего кода.

1 Ответ

3 голосов
/ 03 марта 2020

Попробуйте isin и нарезка на индекс

a_index = (redcap_final_arm1_data.index[redcap_final_arm1_data.record_id
                                           .isin(arm_1_and_m1_df.record_id)].tolist())

, вывод:

Out[1355]: [0, 2, 3, 9]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...