所以我試圖在一個(gè)列上匹配兩個(gè)非常不同的數(shù)據(jù)幀,每個(gè)數(shù)據(jù)幀都包含字符串格式的數(shù)字。我需要一個(gè)簡(jiǎn)潔、非??焖俚慕鉀Q方案,所以我嘗試使用字符串理解并在幾天前成功,然后丟失了我的工作,我試圖重新創(chuàng)建它。df1=pd.DataFrame({'col':['hey','hi','how ya durn']})df2=pd.DataFrame({'col':['hey','hi','hello','what']})df3=df2[[x for x in df2.col for y in df1.col if x in y]]df3.head()所以我前幾天用 2 個(gè)數(shù)據(jù)幀完成了這項(xiàng)工作,都是 20-30 列,約 100k 行,除了每列 1 列之外的不同列數(shù)據(jù),我試圖匹配它。我要么得到 ValueError:Item wrong length # instead of #.要么花費(fèi)大量時(shí)間,因?yàn)槲沂褂玫南到y(tǒng)很慢。我知道我需要使用列表理解或更快的東西,而且我知道.apply()需要太長(zhǎng)時(shí)間。我的兩個(gè)匹配列都包含字符串格式的 10-15 長(zhǎng)度數(shù)字。幾天前,當(dāng)我使用類似的列表組合單行代碼讓它工作時(shí),它花了幾秒鐘的時(shí)間才能完成,并且非常完美,現(xiàn)在我丟失了它并且無法重新創(chuàng)建它,哈哈。任何幫助是極大的贊賞。any()(附注:我可能在列表比較中使用了一個(gè)語句,并且我 95% 確定我使用了if x in y。)
1 回答

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以使用以下命令在兩列中查找字符串
df2[df2.col.isin(df1.col)]
出去:
col
0 hey
1 hi
一個(gè)具有理解性的解決方案是
df2[df2.col.isin([x for x in df2.col for y in df1.col if x in y])]
但是對(duì)于較大的列來說這會(huì)變慢
添加回答
舉報(bào)
0/150
提交
取消