我有一个代码:
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']
中的值是唯一的。
问题:我想获取 ahk_ids_new
中 redcap_final_arm1_data['record_id']
的所有行号(索引),其中 redcap_final_arm1_data ['record_id']
与 arm_1_and_m1_df['record_id']
中的任何值具有相同的值。怎么做?
ahk_ids_new
的预期输出(内容):
Out[57]: [0, 3, 2, 9]
如果有更好的方法来处理我的代码中的数据帧,请发布您更好的变体,而不是修复我的代码。
最佳答案
尝试使用 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]
关于python - 在列中查找与其他数据帧列中的任何其他值匹配的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60512539/