簡體   English   中英

如何基於一個共同的列,研究站點“名稱”組合 2 個熊貓數據框?

[英]How do I combine 2 pandas dataframes based on a common column, research site "Name"?

我是 Python 和一般編碼的新手。 我正在嘗試在 python 中自動處理一些地下水模型輸出數據。 一個 Pandas 數據框用不同類型的多列測量了流流(左),另一個建模了流流(右)。 我試圖在列“名稱”上使用 pd.merge 以便將正確的建模輸出值鏈接到相應的測量站點值。 當我使用以下腳本時,我收到相應的錯誤:

left = measured_df
right = modeled_df

combined_df = pd.merge(left, right, on= 'Name')

ValueError: 列標簽“名稱”不是唯一的。 對於多索引,標簽必須是一個元組,每個級別對應的元素。

每個流的建模數據從一個 numpy 數組開始(不確定 dtype)

array(['silver_drn', '24.681524615195002'], dtype='<U18')

然后我使用 np.concatenate 將 6 個流輸出組合成一個數組:

modeled = np.concatenate([[blitz_drn],[silvies_ss_drn],[silvies_drn],[bridge_drn],[krumbo_drn], [silver_drn]])

然后 pd.DataFrame 創建一個帶有列標題的 Pandas 數據框:

modeled_df = pd.DataFrame(data=modeled, columns= [['Name','Modeled discharge (CFS)']])

請參閱下面的圖片鏈接以了解每個數據框的外觀(目前還不確定最佳共享方式)。

左 =實測流量表

對 =模型流表

也許我誤解了 pd.merge 的工作原理,或者即使它們看起來是文本,數據類型也可能不同,但認為如果每列是一個字符串,它會將建模的輸出附加到“名稱”匹配的相應行在每個數據框中。 任何幫助將不勝感激。

當你這樣做時:

modeled_df = pd.DataFrame(data=modeled, 
                          columns= [['Name','Modeled discharge (CFS)']])

您在列上創建一個 MultiIndex。 並且 MultiIndex 正在嘗試與具有正常索引的 DataFrame 合並,該索引無法正常工作。

你應該這樣做:

modeled_df = pd.DataFrame(data=modeled, 
                          columns=['Name','Modeled discharge (CFS)'])
#                                 ^                                ^

然后合並應該按預期工作。

暫無
暫無

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

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