使用 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
提交
取消