簡體   English   中英

從 DF1 中選擇行,其中列值與 DF2 中的列中的值匹配

[英]Selecting rows from DF1 where column values match values from a column from DF2

這個問題已經解決了(我認為)。 Excel 是問題所在,畢竟不是 python。 下面的代碼應該可以滿足我的需要,並且畢竟似乎不會刪除行。

以黃色突出顯示的行是我想要在 DF1 中 select 的行。 應根據 DF1 的 column_2 中與 DF2 的 column_1 的值匹配的值進行選擇

這是我在經過大量跟蹤和錯誤/搜索后在 python 中使用 Pandas package 的首選解決方案:

NEW_MATCHED_DF1 = DF1.loc[DF1['column 2'].isin(DF2['column_1'])]

我看到的問題是,當我將我的結果與 excel 中發生的情況進行比較時,當我做同樣的事情時,我得到的結果幾乎翻了一番,我認為我的 python 技術正在刪除重復項。 當然,有可能我在 excel 中做錯了,或者 excel 由於某些其他原因不正確,但這是我過去驗證過的,並且對 ZBF57C906FA7D2BB66D67372E41585 更熟悉所以我懷疑它更可能是我在 python 做錯了什么。 EXCEL 畢竟是問題:! :/

最終,我想使用 python 到 select DF1 中的任何和所有行,其中 DF1 的 column_2 與 DF2 的 column_1 匹配。 Excel 速度非常慢,我想放棄使用 excel 來操作大型數據幀。

我感謝任何幫助或幫助指示。 我真的無法弄清楚我的代碼是否實際上正在刪除重復項和/或是否有另一種我可以確信不會這樣做的解決方案。

嘗試使用np.where

import numpy as np
list_df2 = df2['column1'].unique().tolist()
df1['matching_rows'] = np.where(df1['column2'].isin(list_df2),'Match','No Match')

然后使用匹配項創建一個新的 dataframe:

matched_df = df1[df1['matching_rows']=='Match']

暫無
暫無

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

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