根据MultiIndex DataFrame中的第一级列删除重复项

时间:2019-09-20 09:18:18

标签: python pandas dataframe

我有一个这样的MultiIndex Pandas DataFrame:

+---+------------------+----------+---------+--------+-----------+------------+---------+-----------+
|   | VECTOR           | SEGMENTS | OVERALL                      | INDIVIDUAL                       |
|   |                  |          | TIP X   | TIP Y  | CURVATURE | TIP X      | TIP Y   | CURVATURE |
| 0 | (TOP, TOP)       | 2        | 3.24    | 1.309  | 44        | 1.62       | 0.6545  | 22        |
| 1 | (TOP, BOTTOM)    | 2        | 3.495   | 0.679  | 22        | 1.7475     | 0.3395  | 11        |
| 2 | (BOTTOM, TOP)    | 2        | 3.495   | -0.679 | -22       | 1.7475     | -0.3395 | -11       |
| 3 | (BOTTOM, BOTTOM) | 2        | 3.24    | -1.309 | -44       | 1.62       | -0.6545 | -22       |
+---+------------------+----------+---------+--------+-----------+------------+---------+-----------+

如何根据'OVERALL''INDIVIDUAL'下包含的所有列删除重复项?因此,如果我选择'INDIVIDUAL'TIP X下的TIP YCURVATUREINDIVIDUAL的值中删除重复项,则必须全部匹配才能使其成为重复项?

此外,从表12可以看出,它们是重复项,它们只是沿x轴镜像。这些也必须删除。

还可以将OVERALLINDIVIDUAL的标题居中吗?

编辑:frame.drop_duplicates(subset=['INDIVIDUAL'], inplace=True)产生KeyError: Index(['INDIVIDUAL'], dtype='object')

1 个答案:

答案 0 :(得分:1)

您可以为多索引列传递熊猫setInterval(() => { generalchannel.send("") }, 5000); 元组的子集:

.drop_duplicates

或者,如果您的行索引是唯一的,则可以使用以下方法来节省一些输入:

df.drop_duplicates(subset=[
    ('INDIVIDUAL', 'TIP X'),
    ('INDIVIDUAL', 'TIP Y'),
    ('INDIVIDUAL', 'CURVATURE')
])

更新

如注释中所建议,如果要对数据框进行操作,则可以内联进行:

df.loc[df['INDIVIDUAL'].drop_duplicates().index]

或者对于非熊猫功能,可以使用df.loc[df['INDIVIDUAL'].abs().drop_duplicates().index]

.transform