使用 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 列中观察到的原始值。
拉风的咖菲猫
相关分类