![](/img/trans.png)
[英]How do I merge/expand two python pandas dataframes, based on one common column but different content?
[英]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.