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()
。。不知道第一个
和最后一个
存在。谢谢好极了不知道第一个
和最后一个
存在。谢谢不知怎的,我首先看到了另一种反应。你们都给出了相同的答案。既然你先来,我就选你的。不知怎么的,我先看到了另一个反应。你们都给出了相同的答案。既然你先来,我就选你的。