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

标签 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 Y ,和CURVATUREINDIVIDUAL必须全部匹配才能重复吗?

此外,正如您从表 1 中看到的那样和2是关于 x 轴简单镜像的重复项。这些也必须被删除。

另外,我可以将 OVERALL 居中吗?和INDIVIDUAL标题?

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

最佳答案

您可以将 pandas .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]

或者对于非pandas函数,您可以使用.transform:

df.loc[df['INDIVIDUAL'].transform(np.abs).drop_duplicates().index]

关于python - 根据 MultiIndex DataFrame 中的第一级列删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025433/

相关文章:

r - 将数组操作为 BASE R 中的 data.frame

python - 使用 python 将一列(减法)添加到数据框中

python - 无法从 networkx 导入版本

python - 使用 bs4 进行 HTML 解析

python - 对 pandas 系列中的日期数据进行排序

python - Pandas:条件滚动计数 v.2

python - 比较不同 Pandas 数据框中的列

python - 你如何强制刷新 wx.Panel?

python - Networkx 可以从不同文件中读取节点和边吗?

python - 提高 Pandas DataFrames 的行追加性能