将某一列设为索引列再取出索引列中值相同的几行
时间: 2023-07-08 19:53:29 浏览: 78
找出同列中的相同数据
如果要将某一列设为索引列,可以使用 Pandas 的 `set_index()` 函数。如果要选取索引列中值相同的几行,可以使用 `duplicated()` 和 `drop_duplicates()` 函数。
假设你的 DataFrame 如下所示:
```
import pandas as pd
df = pd.DataFrame({
'id': [1, 2, 3, 3, 4, 4, 5],
'value': [10, 20, 30, 30, 40, 40, 50]
})
```
如果你想选取 `id` 列中值为 3 和 4 的行,可以先将 `id` 列设为索引列,然后使用 `duplicated()` 和 `drop_duplicates()` 函数来选取相应的行,如下所示:
```
df = df.set_index('id')
df = df.loc[df.index.duplicated(keep=False) & df.index.isin([3, 4])]
df = df.reset_index().drop_duplicates(subset='id', keep='first').set_index('id')
```
第一行代码中,`df.set_index('id')` 将 `id` 列设为索引列。
第二行代码中,`df.index.duplicated(keep=False)` 会返回所有重复的索引行,`df.index.isin([3, 4])` 会返回 `id` 列中值为 3 和 4 的行。使用 `&` 运算符将两个条件合并,选出 `id` 列中值为 3 和 4 并且索引列中重复的行。
第三行代码中,`df.reset_index()` 将索引列转换为普通列,`df.drop_duplicates(subset='id', keep='first')` 根据 `id` 列去重,保留第一个出现的行,然后再使用 `df.set_index('id')` 将 `id` 列设为索引列,得到最终结果。
阅读全文