Объединение / объединение двух наборов данных с дублированными именами - PullRequest
1 голос
/ 18 октября 2019

Я попытался объединить два набора данных (DataFrames) следующим образом:

D1 = pd.DataFrame({'Village':['Ampil','Ampil','Ampil','Bachey','Bachey','Center','Center','Center','Center'], 'Code':[123,324,190,453,321,786,456,234,987]})

D2 = pd.DataFrame({'Village':['Ampil','Ampil','Bachey','Bachey','Center','Center'],'Lat':[11.563,13.278,12.637,11.356,12.736,13.456], 'Long':[102.234,103.432,105.673,103.539,103.873,102.983]})

Я хочу объединить два на основе столбца Деревня. Я хочу, чтобы результат выглядел следующим образом:

D3 = pd.DataFrame({'Village': ['Ampil','Ampil','Bachey','Bachey','Center','Center'],'Code':[123,324,453,321,786,456],'Lat':[11.563,13.278,12.637,11.356,12.736,13.456], 'Long':[102.234,103.432,105.673,103.539,103.873,102.983]})

Я попытался объединить, объединить и выполнить конкат, но ни один из них не соответствует цели. Мне нужен код, который будет применяться к большим данным. Очень ценю, если кто-то может помочь.

1 Ответ

1 голос
/ 18 октября 2019

Один из способов - сначала создать текущий счет для обоих начальных значений dfs на Village, а затем объединить оба значения Village и count:

df1['count'] = df1.groupby('Village').cumcount()
df2["count"] = df2.groupby('Village').cumcount()

print (df2.merge(df1,on=["Village","count"],how="left").drop("count",axis=1))

#
      Village     Lat     Long  Code
0   Ampil  11.563  102.234   123
1   Ampil  13.278  103.432   324
2  Bachey  12.637  105.673   453
3  Bachey  11.356  103.539   321
4  Center  12.736  103.873   786
5  Center  13.456  102.983   456
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...