python中的数据帧:基于df2中的行从df1中删除行

2024-04-20 00:35:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧:

df1: contains all information
rowname a  b  c  d
R1      1  2  0  1
R2      2  2  0  1
R3      0  2  0  0
R4      1  2  0  1

df2: contains a subset of the rows and columns:
rowname a  b  c  
R1      1  2  0  
R2      2  2  0   
R4      1  2  0 

我想过滤掉所有不在df1中的行df2。所以在这个例子中,我希望去掉df1中的R3,同时保留所有列。你知道吗

我认为使用df1.merge(df2, ...)可以实现这一点,但是我尝试了各种各样的论证,但都没有成功。我在用Python3。你知道吗


Tags: ofthe数据informationallrowsdf1df2
2条回答

这是一种只在['a', 'b', 'c']列上匹配的方法。你知道吗

df = pd.concat([df1, df2])

df = df.loc[df.duplicated(['a', 'b', 'c'], keep=False)]\
       .dropna(subset=['d'], axis=0)

df['d'] = df['d'].astype(int)

结果:

   a  b  c  d rowname
0  1  2  0  1      R1
1  2  2  0  1      R2
3  1  2  0  1      R4

Simpy使用isin()过滤数据帧

df1[df1.rowname.isin(df2.rowname)]

  rowname  a  b  c  d
0      R1  1  2  0  1
1      R2  2  2  0  1
3      R4  1  2  0  1

相关问题 更多 >