簡體   English   中英

使用組合鍵合並 pandas 中的數據框

[英]Merge dataframes in pandas with a combination of keys

我有兩個數據框,我需要根據一個鍵(一個“事件編號”)將它們組合在一起。 然而,關鍵是重復的,因為它們將被攝取的數據庫需要特定的坐標格式。 如何根據鍵的組合加入必要的列?

例如,這兩個表如下所示:

事故編號 緯度/經度 GPS坐標
AB123 緯度 32.123
AB123 120.123
CD321 緯度 31.321
CD321 121.321

和...

事故編號 緯度/經度 地理代碼坐標
AB123 緯度 35.123
AB123 125.123
CD321 緯度 36.321
CD321 126.321

我需要去...

事故編號 緯度/經度 GPS坐標 地理代碼坐標
AB123 緯度 32.123 35.123
AB123 120.123 125.123
CD321 緯度 31.321 36.321
CD321 121.321 126.321

每個表中的記錄數不是 100% 相等,因此需要允許 NaN。 我實際上是在嘗試將“GeoCodeCoordinates”列添加到另一個 dataframe 中,結合“事件編號”和“緯度/經度”,因此它將值“AB123 + Lat”和“AB123 + Long”視為一個單一的鑰匙。 這可以在代碼中指定,還是需要創建一個新列和一個計算來創建該值作為鍵?

我想我是以一種有點愚蠢的方式來做這件事的。 Lat 和 Long 最初存儲在單獨的字段中,我使用 .melt() 使數據更長。 最終接受這個的數據庫需要 Lat/Long 字段的更長格式。

GPSColList = list(GPSRecords.columns)

GPSColList.remove('Latitude')

GPSList.remove('Longitude')

GPSMelt = GPSRecords.melt(id_vars=GPSColList, value_vars=['Latitude', 'Longitude'], var_name='Lat/Long', value_name="GPSCoordinates")

由於兩組坐標位於不同的字段中,我用每組坐標創建了兩個數據框並分別熔化它們。 我嘗試合並它們看起來像:

mergeMelt = pd.merge(GPSMelt, GeoCodeMelt[["GeoCodeCoordinates"]], on=['Incident_Number', 'Lat/Long'])

結果是 KeyError: 'Incident_Number'

嘗試:

cols = ['Incident_Number', 'Lat/Long', 'GeoCodeCoordinates']
mergeMelt = GPSMelt.merge(GeoCodeMelt[cols], on=cols[:-1])

KeyError: 'Incident_Number'被引發是因為您使用GeoCodeMelt[['GeoCodeCoordinates']]所以當您合並時您的列Incident_NumberLat/Long不存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM