我想從 df1 中洗掉在同一列中也可以在 df2 中找到的行。
df1 與 df2 相比有額外的列,我在這里沒有包括在內以簡化問題
df1 = pd.date_range(start='1/1/2022', end='1/04/2022', freq='D')
df2 = pd.date_range(start='1/1/2022', end='1/08/2022', freq='D')
df1 = pd.DataFrame(df1, columns=['date'])
df2 = pd.DataFrame(df2, columns=['date'])
# this line does not remove the duplicates
df3 = df2.drop_duplicates(df1.columns[0:])
最終結果應該是
0 2022-01-05
1 2022-01-06
2 2022-01-07
3 2022-01-08
uj5u.com熱心網友回復:
洗掉 df1 中的列,這些列也在 df2 中找到
df1.drop(columns=df2.columns, errors='ignore', inplace=True)
要么
df1 = df1.drop(columns=df2.columns, errors='ignore')
在 df1 和 df2 中洗掉特定列中的行,例如日期
在您編輯之后,如果它是像日期這樣的單列,請嘗試
df1[~df1['date'].isin(df2['date'])]
如果是對多列的檢查,也可以這樣做。但是,我們將需要更多資訊。如果兩個 df 中的 column1 在 df1 和 df2 中具有相同的值,并且在同一行中,兩個 df 中的 column2 具有不同的值,會發生什么情況。?
uj5u.com熱心網友回復:
drop_duplicates僅適用于行。如果要從一個 df 中洗掉另一個 df 中的列,請使用為在(不應該保留 =)中的列和不在(應該保留 = )~df2.columns.isin(df1.columns)中的列回傳 False 。然后將生成的列掩碼傳遞給第二個位置的。df1FalseTruedf1True.loc
此行將從中洗掉df2列df1:
df2 = df2.loc[:, ~df2.columns.isin(df1.columns)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443073.html
