首页 > 解决方案 > 使用条件正确拆分数据框

问题描述

我有一个包含“类型”列和另一个“数字”列的数据框。“type”列填充了三个唯一的可能值:“ECU”、“EPMU”和“PDI”。示例:

df1 = pd.DataFrame({"Name": ["Alex", "Quentin", "jean", "Gladis", "Sara", "Xie", "Kevin", "Juan"],
                    "Type": ["ECU", "EMPU", "PBCU", "EMPU", "ECU", "ECU", "ECU", 'ECU'],
                    "number": ["3004", "152", "45", "100", "3001", "3002", "3000", "3054"]
                    })

df1 = df1.set_index('Name')

我想创建两个额外的数据框:一个包含所有“ECU”行,但不包含数字“3001”、“3002”、“3003”、“3004”、“3006”。另一个数据框只包含我从创建的第一个数据框中排除的 5 个数字。

我知道如何使用此命令,但不知道如何添加条件以排除 5 个数字。也不是如何使用 5 个数字创建数据框:

df = df1[df1['Type'] == 'ECU']

有人能帮我吗 ?

标签: pythonpandasdataframesplitconditional-statements

解决方案


您可以通过这种方式创建第一个数据框(~is not):

df1[(df1['Type'] == 'ECU') & (~df1['number'].isin(['3001', '3002', '3003', '3004', '3006']))]

输出:

   Name    Type number
6   Kevin   ECU 3000
7   Juan    ECU 3054

第二个:

df1[df1['number'].isin(['3001', '3002', '3003', '3004', '3006'])]

   Name    Type number
0   Alex    ECU 3004
4   Sara    ECU 3001
5   Xie     ECU 3002

推荐阅读