我有两个数据框。 df.A 有两列,一列包含道路名称,一列包含页码和网格(即 10 A4)。 df.B 将是结果 df,它有两列,一列包含唯一的道路名称,另一列为页码。 df.A 包含重复的道路,因为它们穿过多个网格。(见下文)。
11 ACCESS RAMP 18-C4
12 ACCESS RAMP 13-D2
13 ACCESS RAMP 11-A1
14 ACCESS RAMP 11-A4
如何将这些数据合并到一个新的数据框中,或者合并到同一个数据框中,以便有一行:
入口匝道 18 C4、13 D2、11 A1、11 A4
df.B 有 1564 个条目。 df.A 有 3130
我尝试过循环中的循环和其他几种变体,但我认为我可能缺少索引的东西。我得到的结果是,所有 3000 个值都存储在 1500 行的每一行中,并且只有一个值应用于 df.B 页列,但它会沿着索引向下逐一输入它们,而不是聚合它们。
for st in f_t['street']:
LV = ''
for i in df['st_label']:
if (i==st):
LV = LV + ', ' + df[GridName']
f_t['Grids'] = LV
这个会降低索引,但也会复制该值。我错过了什么?
我想这可能就是你想要的?
首先我们将一些无意义的数据加载到 dfA 中:
import pandas as pd
data = {
'road': ['ACCESS RAMP', 'ACCESS RAMP', 'ACCESS RAMP', 'ACCESS RAMP','ACCESS DRIVE', 'ACCESS DRIVE', 'ACCESS DRIVE', 'ACCESS DRIVE'],
'grid': ['18-C4', '13-D2', '11-A1', '11-A4','19-A4', '11-D1', '9-Z1', '19-D6']
}
dfA = pd.DataFrame(data)
接下来,让我们使用 groupby 函数按道路列对数据框中的信息进行分组,并连接网格列中的所有关联值(在本例中用逗号分隔)。
result_df = dfA.groupby('road')['grid'].agg(', '.join).reset_index()
result_df 看起来像这样:
路 | 网格 |
---|---|
访问驱动器 | 19-A4、11-D1、9-Z1、19-D6 |
通道坡道 | 18-C4、13-D2、11-A1、11-A4 |