![](/img/trans.png)
[英]Python: convert series object columns in pandas dataframe to int64 dtype
[英]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.