我刚开始看Pandas,并试图弄清楚如何计算特定行的次数。我需要添加一个新列,显示重复行的显示次数,并仅显示唯一的行。
所以这个:
File "/Users/Apple/Downloads/emsdk_portable/emscripten/1.30.0/emcc", line 52, in <module>
from tools import shared, jsrun, system_libs
ImportError: No module named tools
会变成这样:
team runs
team 1 5
team 1 5
team 1 5
team 2 5
答案 0 :(得分:3)
一旦弄清楚相同的行意味着什么,这很容易。我只是使用stringifed值的哈希值。如果你有一个替代定义,那么也可以。
In [37]: df = DataFrame({'A' : [1,1,1,2,3,3], 'B' : [2,2,2,2,3,3]})
In [38]: df
Out[38]:
A B
0 1 2
1 1 2
2 1 2
3 2 2
4 3 3
5 3 3
计算每行的哈希值。相同的&#39;行&#39;产生相同的哈希值
In [39]: hashed = df.apply(lambda x: hash(str(x.values)), axis=1)
In [40]: hashed
Out[40]:
0 4112993419872972622
1 4112993419872972622
2 4112993419872972622
3 7113020419917972579
4 6113011419891972603
5 6113011419891972603
dtype: int64
将值计数映射回原始索引。如果您想要第一个唯一的行(而不是最后一行),可以将take_last=False
传递给.drop_duplicates()
In [41]: hashed.drop_duplicates().map(hashed.value_counts())
Out[41]:
0 3
3 1
4 2
dtype: int64