pandas 做merge的時(shí)候報(bào)這個(gè)錯(cuò):
df22 = pd.merge(df1,df2,left_on='company_name',right_on = 'name',how='left') Process finished with exit code 137
查了一下原因是:
兩個(gè)表太大了,可能導(dǎo)致內(nèi)存不夠。
補(bǔ)充:Pandas:merge函數(shù)使用注意事項(xiàng)(pandas的merge函數(shù)造成大量錯(cuò)誤的空值)
相信使用過Pandas的merge函數(shù)的人都知道,merge具有連接的功能,左連接更是在數(shù)據(jù)處理中最常用的連接方式。在使用merge過程中,
經(jīng)常會(huì)出現(xiàn)這種情況:
dataframe1:
a b
1 1
2 2
3 3
dataframe = pd.merge(dataframe1,dataframe2,on='b',how='left')后得到
dataframe:
a b c
1 1 2
2 2 3
3 3 nan
但有時(shí)候dataframe2為
dataframe = pd.merge(dataframe1,dataframe2,on='b',how='left')后得到
dataframe:
a b c
1 1 2
2 2 3
3 3 nan
這是為什么呢?
原因是通常我們的dataframe的數(shù)據(jù)都是從csv文件或者xls文件讀取過來的,在excel中打開對(duì)應(yīng)b那些的數(shù)據(jù)看起來是一樣的,但是使用pandas讀取的時(shí)候,
可能發(fā)現(xiàn)不同csv文件或者xls文件的同一列的數(shù)據(jù)相同的數(shù)據(jù)具有整型和浮點(diǎn)型的區(qū)別,這樣導(dǎo)致在連接的時(shí)候,3和3.0是不一樣的,無法對(duì)3那行進(jìn)行連接。
因此,在使用merge進(jìn)行連接前,必須對(duì)連接的關(guān)鍵字進(jìn)行字符化或者整型化的調(diào)整。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- pandas 使用merge實(shí)現(xiàn)百倍加速的操作
- 詳解Python3 pandas.merge用法
- 詳解PANDAS 數(shù)據(jù)合并與重塑(join/merge篇)
- pandas dataframe的合并實(shí)現(xiàn)(append, merge, concat)
- 在Pandas中DataFrame數(shù)據(jù)合并,連接(concat,merge,join)的實(shí)例
- Pandas 合并多個(gè)Dataframe(merge,concat)的方法