使用 Pandas,我試圖在 A 列中找到某個值的最近重疊出現,該值也恰好在 B 列中(盡管不一定出現在同一行中);這將對 A 列中的所有行進行。我已經使用 n^2 解決方案完成了一些接近的事情(通過創建每列的列表并使用嵌套的 for 循環進行迭代),但如果可能的話,我想使用更快的方法;因為這需要在包含數萬個條目的表中實現。(因此,矢量化解決方案將是理想的,但我更在尋找“正確”的方法來做到這一點。)df['idx'] = range(0, len(df.index))A = list(df['r_A'])B = list(df['r_B'])A_B_Dict = {}for i in range(0, len(B)-1): for j in range(0, len(A)-1): if B[i] == A[j]: A_search = df.loc[df['r_A'] == A[j]].index A_B_Dict[B[i]] = A_search鑒于一些 df 像這樣:df = [[1, 'A', 'A'], [2, 'B', 'D'], [3, 'C', 'B'] [4, 'D', 'D'] ]df = pd.DataFrame(data, columns = ['idx', 'A', 'B'])它應該返回如下內容: A_B_Dict = {'A': 1, 'B': 3, 'C':None', 'D':4}這樣,在 B 列中發生的來自 A 列的最新觀察(或所有觀察)被存儲為值,A_B_Dict其中的鍵A_B_Dict是在 A 列中觀察到的原始值。
1 回答

拉風的咖菲貓
TA貢獻1995條經驗 獲得超2個贊
國際大學聯盟
d=dict(zip(df.B,df.idx))
dict(zip(df.A,df.A.map(d)))
{'A': 1.0, 'B': 3.0, 'C': nan, 'D': 4.0}
添加回答
舉報
0/150
提交
取消