使用Pandas,我试图找到A列中某些值的最近重叠出现,这也恰好出现在B列中(但不一定发生在同一行); 对A列中的所有行都要这样做。
我已经用n ^ 2解决方案完成了一些事情(通过创建每个列的列表并使用嵌套的for循环迭代),但我想尽可能使用更快的东西; 因为这需要在包含数万个条目的表中实现。(因此,Vectorized解决方案将是理想的,但我更希望采用“正确”的方式来实现这一目标。)
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列中观察到的原始值的值。
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar