从其他数据框按索引删除数据框

时间:2019-07-05 09:23:27

标签: python pandas dataframe

我有两个数据框df1和df2。我想基于df1中的索引从df2中删除数据。

import pandas as pd
df1=pd.DataFrame({'index':[1,2,3,4],
                 'names':['andi','andrew','jhon','andreas']})
df2=pd.DataFrame({'index':[1,2],
                 'names':['andi','andrew']})

预期产量

index,names
3,jhon
4,andreas

1 个答案:

答案 0 :(得分:2)

如果需要通过索引值删除行,请使用DataFrame.drop

df = df1.drop(df2.index)
print (df)
   index    names
2      3     jhon
3      4  andreas

如果需要通过称为index的列删除值,请使用Series.isinboolean indexing并通过~反转掩码:

df = df1[~df1['index'].isin(df2['index'])]
print (df)
   index    names
2      3     jhon
3      4  andreas

或通过DataFrame.set_index按两列创建索引并使用第一种解决方案:

df = df1.set_index('index').drop(df2.set_index('index').index)
print (df)
         names
index         
3         jhon
4      andreas