swe*_*eet 2 python tuples count pandas
我有以下内容pandas.DataFrame:
val1 val2 val3 val4
1 7 8 3 2
2 1 4 5 4
3 5 7 5 3
4 7 8 3 2
5 6 8 1 0
6 0 2 5 7
7 1 4 5 4
8 7 8 3 2
Run Code Online (Sandbox Code Playgroud)
我想计算我的DataFrame中每个元组的数量.预期结果(或多或少):
count tuple
3 (7, 8, 3, 2)
2 (1, 4, 5, 4)
1 (5, 7, 5, 3)
1 (6, 8, 1, 0)
1 (0, 2, 5, 7)
Run Code Online (Sandbox Code Playgroud)
另请注意,我的真实DataFrame 有数百万个条目,所以我确实需要一些时间优化的解决方案.
直到现在,我的方法是用字符串列转换每个列Series.astype(str),然后连接列,并使用a pandas.Series.value_counts().但我认为可能有一种更快,更自然的方法来解决我的问题.任何人都可以开导我吗?
我认为自然的解决方案是使用pandas.DataFrame.groupby:
>>> res = df.groupby(list(df.columns)).size()
>>> res
val1 val2 val3 val4
0 2 5 7 1
1 4 5 4 2
5 7 5 3 1
6 8 1 0 1
7 8 3 2 3
dtype: int64
>>> res.index = [tuple(x) for x in res.index]
>>> res = res.reset_index().set_index(0)
>>> res
index
0
1 (0, 2, 5, 7)
2 (1, 4, 5, 4)
1 (5, 7, 5, 3)
1 (6, 8, 1, 0)
3 (7, 8, 3, 2)
Run Code Online (Sandbox Code Playgroud)
然后您可以重命名索引和列
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |