簡體   English   中英

熊貓問題 - 合並 int64 和對象列?

[英]Pandas question - merging on int64 and object columns?

我有幾個 Pandas 數據框,我試圖將它們合並在一起,但沒有任何運氣。

第一個數據幀(我們稱之為數據幀 A)看起來有點像這樣:

offer | type | country
------|------|--------
123   | A    | UK
456   | B    | UK
789   | A    | ROI

它是通過使用以下代碼讀取 .xlsx 文件來創建的:

file_name = "My file.xlsx"
df_a = pd.read_excel(file_name, sheet_name = "Offers Plan", usecols= ["offer","type","country"], dtype={'offer': str})

報價列作為字符串被讀入,否則它們將以 123.0 格式結束。 這些商品需要采用 123 格式,因為它們稍后會在某些嵌入式 SQL 中用於在某個數據庫表中查找它們的代碼中。 在此表中,商品的格式為 123,因此在查找 123.0 時 SQL 將不返回任何結果。

第二個數據幀(數據幀 B)看起來有點像這樣:

offer
-----
123
456
789
123
456
123

我想要做的是將兩個數據框合並在一起,因此結果如下所示:

offer | type | country
------|------|--------
123   | A    | UK
456   | B    | UK
789   | A    | ROI
123   | A    | UK
456   | B    | UK
123   | A    | UK

我嘗試使用以下代碼,但收到一條錯誤消息,提示“ValueError:您正在嘗試在 int64 和對象列上合並”:

df_merged = pd.merge(df.b, df.a, how = 'left', on="offer") 

有誰知道我如何正確合並數據框?

IIUC,您只需將 df_a 列更改為 int

df_a['offer'] = df_a['offer'].astype(int)

這會將它從 float/str 更改為 int。 如果這給您一個關於從 str/float 轉換為 int 的錯誤,請檢查以確保您的數據中沒有任何 NaN/Nulls。 如果您這樣做,您將需要刪除它們才能成功轉換。

暫無
暫無

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

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