【发布时间】:2016-02-25 19:09:37
【问题描述】:
我希望能够计算 Pandas DataFrame 中数据的描述性统计数据,但我只关心重复的条目。例如,假设我有由以下人员创建的 DataFrame:
import pandas as pd
data={'key1':[1,2,3,1,2,3,2,2],'key2':[2,2,1,2,2,4,2,2],'data':[5,6,2,6,1,6,2,8]}
frame=pd.DataFrame(data,columns=['key1','key2','data'])
print frame
key1 key2 data
0 1 2 5
1 2 2 6
2 3 1 2
3 1 2 6
4 2 2 1
5 3 4 6
6 2 2 2
7 2 2 8
如您所见,第 0、1、3、4、6 和 7 行都是重复的(使用“key1”和“key2”。但是,如果我像这样索引这个 DataFrame:
frame[frame.duplicated(['key1','key2'])]
我明白了
key1 key2 data
3 1 2 6
4 2 2 1
6 2 2 2
7 2 2 8
(即第 1 行和第 2 行不显示,因为它们没有被复制方法索引为 True)。
这是我的第一个问题。我的第二个问题涉及如何从这些信息中提取描述性统计数据。暂时忘记丢失的重复项,假设我想计算重复条目的 .min() 和 .max() (以便我可以获得一个范围)。我可以像这样在 groupby 对象上使用 groupby 和这些方法:
a.groupby(['key1','key2']).min()
这给了
key1 key2 data
key1 key2
1 2 1 2 6
2 2 2 2 1
我想要的数据显然在这里,但我提取它的最佳方法是什么?如何索引生成的对象以获得我想要的(即 key1、key2、数据信息)?
【问题讨论】:
-
注意:对于那些想知道为什么我在最后一个命令中有额外的 'key1' 和 'key2' 列的人,这是因为我使用的是 Pandas 0.07(这是 Ubuntu 存储库中可用的)。如果我升级到 Pandas 0.14,我不会再得到它(正如您在下面看到的 ajcr 和 Yoel 的答案)。