我有两个数据框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
答案 0 :(得分:2)
如果需要通过索引值删除行,请使用DataFrame.drop
:
df = df1.drop(df2.index)
print (df)
index names
2 3 jhon
3 4 andreas
如果需要通过称为index
的列删除值,请使用Series.isin
和boolean 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