基于两列条件创建 Dataframe

anauzrmj  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(264)

嗨,我有下表:

name: col1: ... col10
 a     bill      abc
 b     bill      hfb
 c     aaa       asd
 a     jim       fsa
 b     aaa       gds
 a     jim       ags

我正在尝试创建一个新表,该表只显示df['col1']中的'bill'没有显示在df['name']中的行。例如,bill出现在前两行,并且在name列中具有与bill对应的行相同值的行将从df中删除。下面显示了一个示例输出。

name: col1: ... col10
 c     aaa       asd

我试过这个:

new_df = df[df['col1']!='bill']

但这也带来了:

name: col1: ... col10
 c     aaa       asd
 a     jim       fsa
 b     aaa       gds
 a     jim       ags
rks48beu

rks48beu1#

尝试:

x = df[~df["name"].isin(df.loc[df.col1.eq("bill"), "name"])]
print(x)

印刷品:

name col1 col10
2    c  aaa   asd

步骤:
选择所有“名称”,其中 col1=="bill" :

df.loc[df.col1.eq("bill"), "name"]

0    a
1    b
Name: name, dtype: object

创建布尔掩码,选择与“账单”共享“名称”的元素

df["name"].isin(df.loc[df.col1.eq("bill"), "name"])

0     True
1     True
2    False
3     True
4     True
5     True
Name: name, dtype: bool

选择不与“bill”共享名称的元素,并取消此掩码:

df[~df["name"].isin(df.loc[df.col1.eq("bill"), "name"])]

  name col1 col10
2    c  aaa   asd

相关问题