所以我試圖在一個列上匹配兩個非常不同的數據幀,每個數據幀都包含字符串格式的數字。我需要一個簡潔、非??焖俚慕鉀Q方案,所以我嘗試使用字符串理解并在幾天前成功,然后丟失了我的工作,我試圖重新創建它。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 個數據幀完成了這項工作,都是 20-30 列,約 100k 行,除了每列 1 列之外的不同列數據,我試圖匹配它。我要么得到 ValueError:Item wrong length # instead of #.要么花費大量時間,因為我使用的系統很慢。我知道我需要使用列表理解或更快的東西,而且我知道.apply()需要太長時間。我的兩個匹配列都包含字符串格式的 10-15 長度數字。幾天前,當我使用類似的列表組合單行代碼讓它工作時,它花了幾秒鐘的時間才能完成,并且非常完美,現在我丟失了它并且無法重新創建它,哈哈。任何幫助是極大的贊賞。any()(附注:我可能在列表比較中使用了一個語句,并且我 95% 確定我使用了if x in y。)
1 回答

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