根据 pandas 中的城市创建批次

Creating batches based on city in pandas

我有两个不同的数据框,我想对它们进行模糊匹配以查找和删除重复项。为了使过程 faster/more 准确,我只想模糊匹配来自同一城市的两个数据框的记录。因此,有必要根据一个数据框中的城市创建批次,然后 运行 每个批次与具有类似城市的另一个数据框的子集之间的模糊匹配器。我找不到另一个执行此操作的 post,我被卡住了。这是我到目前为止所拥有的。谢谢!

df = pd.DataFrame({'A':[1,1,2,2,2,2,3,3],'B':['Q','Q','R','R','R','P','L','L'],'origin':['file1','file2','file3','file4','file5','file6','file7','file8']})
cols = ['B']
df1 = df[df.duplicated(subset=cols,keep=False)].copy()
df1 = df1.sort_values(cols)
df1['group'] = 'g' + (df1.groupby(cols).ngroup() + 1).astype(str)
df1['duplicate_count'] = df1.groupby(cols)['origin'].transform('size')
df1_g1 = df1.loc[df1['group'] == 'g1']
print(df1_g1)

不会考虑任何不重复的内容,因此如果一个值只出现一次,那么它将被跳过,就像 B 列中 'P' 的情况一样。它还需要我进入并每次都对组进行硬编码,这并不理想。我一直无法找出 for 循环或任何其他方法来解决这个问题。谢谢!

你可以传给locals

variables = locals()
for i,j in df1.groupby('group'):
    variables["df1_{0}".format(i)] = j
df1_g1
Out[314]: 
   A  B origin group  duplicate_count
6  3  L  file7    g1                2
7  3  L  file8    g1                2