首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过将列的类别划分为集合来过滤数据帧?

如何通过将列的类别划分为集合来过滤数据帧?
EN

Stack Overflow用户
提问于 2020-01-11 16:17:56
回答 1查看 44关注 0票数 1

我有一个数据框架:

代码语言:javascript
复制
Prop_ID    Unit_ID      Prop_Usage                     Unit_Usage
1          1            RESIDENTIAL                    RESIDENTIAL
1          2            RESIDENTIAL                    COMMERCIAL
1          3            RESIDENTIAL                    INDUSTRIAL
1          4            RESIDENTIAL                    RESIDENTIAL
2          1            COMMERCIAL                     RESIDENTIAL
2          2            COMMERCIAL                     COMMERCIAL
2          3            COMMERCIAL                     COMMERCIAL
3          1            INDUSTRIAL                     INDUSTRIAL
3          2            INDUSTRIAL                     COMMERCIAL
4          1            RESIDENTIAL - COMMERCIAL       RESIDENTIAL
4          2            RESIDENTIAL - COMMERCIAL       COMMERCIAL
4          3            RESIDENTIAL - COMMERCIAL       INDUSTRIAL
5          1            COMMERCIAL / RESIDENTIAL       RESIDENTIAL
5          2            COMMERCIAL / RESIDENTIAL       COMMERCIAL
5          3            COMMERCIAL / RESIDENTIAL       INDUSTRIAL
5          4            COMMERCIAL / RESIDENTIAL       COMMERCIAL

一个属性可以有多个单元。这意味着单位是属性的子类别。我想过滤Prop_UsageUnit_Usage不匹配的行。我们在Prop_Usage列中有一个类别是RESIDENTIAL - COMMERCIAL,那么Unit_Usage可以是RESIDENTIALCOMMERCIALCOMMERCIAL / RESIDENTIAL也是如此。

预期输出:

代码语言:javascript
复制
Prop_ID    Unit_ID      Prop_Usage                   Unit_Usage
1          2            RESIDENTIAL                  COMMERCIAL
1          3            RESIDENTIAL                  INDUSTRIAL
2          1            COMMERCIAL                   RESIDENTIAL
3          2            INDUSTRIAL                   COMMERCIAL
4          3            RESIDENTIAL - COMMERCIAL     INDUSTRIAL
5          3            COMMERCIAL / RESIDENTIAL     INDUSTRIAL
EN

回答 1

Stack Overflow用户

发布于 2020-01-11 16:25:34

DataFrame.apply中使用in语句

代码语言:javascript
复制
df = df[~df.apply(lambda x: x['Unit_Usage'] in x['Prop_Usage'], axis=1)]

或者在列表理解中使用zip

代码语言:javascript
复制
df = df[[not a in b for a, b in zip(df['Unit_Usage'], df['Prop_Usage'])]]

代码语言:javascript
复制
print (df)
    Prop_ID  Unit_ID                Prop_Usage   Unit_Usage
1         1        2               RESIDENTIAL   COMMERCIAL
2         1        3               RESIDENTIAL   INDUSTRIAL
4         2        1                COMMERCIAL  RESIDENTIAL
8         3        2                INDUSTRIAL   COMMERCIAL
11        4        3  RESIDENTIAL - COMMERCIAL   INDUSTRIAL
14        5        3  COMMERCIAL / RESIDENTIAL   INDUSTRIAL
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59692738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档