Python:基于行之间的比较选择行

Python:基于行之间的比较选择行,python,indexing,pandas,Python,Indexing,Pandas,在下面的数据框中,第一列是偶尔带有非唯一值的索引 | | col1 | |---|------| | A | 120 | | A | 90 | | A | 80 | | B | 80 | | B | 50 | | C | 120 | | D | 150 | | D | 150 | 我想选择行,以便获得以下数据帧 | | col1 | |---|------| | A | 120 | | B | 80 | | C | 120 | | D | 150 |

在下面的数据框中,第一列是偶尔带有非唯一值的索引

|   | col1 |
|---|------|
| A |  120 |
| A |   90 |
| A |   80 |
| B |   80 |
| B |   50 |
| C |  120 |
| D |  150 |
| D |  150 |
我想选择行,以便获得以下数据帧

|   | col1 |
|---|------|
| A |  120 |
| B |   80 |
| C |  120 |
| D |  150 |
基本上,我只想让第一行与索引的唯一值关联。

试试这个

import pandas as pd
import numpy as np

index = 'A A A B B C D D'.split()
col1 = [120, 90, 80, 80, 50, 120, 150, 150]
ser = pd.Series(col1, index=index)
# use groupby and keep the first element
ser.groupby(level=0).first()

Out[200]: 
A    120
B     80
C    120
D    150
dtype: int64
试试这个

import pandas as pd
import numpy as np

index = 'A A A B B C D D'.split()
col1 = [120, 90, 80, 80, 50, 120, 150, 150]
ser = pd.Series(col1, index=index)
# use groupby and keep the first element
ser.groupby(level=0).first()

Out[200]: 
A    120
B     80
C    120
D    150
dtype: int64
下面是一个例子:

我们从一个看起来像这样的数据帧开始

      | col |
-------------
   A  |  1  |
   B  |  2  |
   B  |  3  |
   C  |  4  |
   C  |  5  |
   C  |  6  |
使用
groupby
方法

import pandas as pd
df = pd.DataFrame(index=['a', 'b', 'b', 'c', 'c', 'c'],
                  data=[1, 2, 3, 4, 5, 6], columns=['col'])

group = df.groupby(level=0)
df = group.first()
结果是:

      | col |
-------------
   A  |  1  |
   B  |  2  |
   C  |  4  |
如果要保留每个索引的最后值,可以使用
group.last()

以下是一个示例:

我们从一个看起来像这样的数据帧开始

      | col |
-------------
   A  |  1  |
   B  |  2  |
   B  |  3  |
   C  |  4  |
   C  |  5  |
   C  |  6  |
使用
groupby
方法

import pandas as pd
df = pd.DataFrame(index=['a', 'b', 'b', 'c', 'c', 'c'],
                  data=[1, 2, 3, 4, 5, 6], columns=['col'])

group = df.groupby(level=0)
df = group.first()
结果是:

      | col |
-------------
   A  |  1  |
   B  |  2  |
   C  |  4  |

如果要保留每个索引的最后值,可以使用
group.last()

。不知道
第一个
最后一个
存在。谢谢好极了不知道
第一个
最后一个
存在。谢谢不知怎的,我首先看到了另一种反应。你们都给出了相同的答案。既然你先来,我就选你的。不知怎么的,我先看到了另一个反应。你们都给出了相同的答案。既然你先来,我就选你的。