我有一份清单
[[12, 6], [12, 0], [0, 6], [12, 0], [12, 0], [6, 0], [12, 6], [0, 6], [12, 0], [0, 6], [0, 6], [12, 0], [0, 6], [6, 0], [6, 0], [12, 0], [6, 0], [12, 0], [12, 0], [0, 6], [0, 6], [12, 6], [6, 0], [6, 0], [12, 6], [12, 0], [12, 0], [0, 6], [6, 0], [12, 6], [12, 6], [12, 6], [12, 0], [12, 0], [12, 0], [12, 0], [12, 6], [12, 0], [12, 0], [12, …Run Code Online (Sandbox Code Playgroud) 但是,关于计算两个或更多系列组合的最佳方法的问题较少.解决方案呈现(1,2),但是,当和为什么要使用的每个没有讨论.
以下是三种潜在方法的基准测试.我有两个具体问题:
grouper效率更高count?我预计count它会更高效,因为它在C中实现.grouper即使列数从2增加到4 ,优越的性能仍然存在.value_counter表现不佳grouper?这是由于从列表构建列表或系列的成本吗?我理解输出是不同的,这也应该告知选择.例如,使用连续numpy数组与字典理解相比,按计数过滤更有效:
x, z = grouper(df), count(df)
%timeit x[x.values > 10] # 749µs
%timeit {k: v for k, v in z.items() if v > 10} # 9.37ms
Run Code Online (Sandbox Code Playgroud)
然而,我的问题的重点是在一系列与字典中建立可比较结果的表现.我的C知识是有限的,但我会感谢任何可以指出这些方法的基础逻辑的答案.
基准代码
import pandas as pd
import numpy as np
from collections import Counter
np.random.seed(0)
m, n = …Run Code Online (Sandbox Code Playgroud) 我有以下python pandas数据框:
df = pd.DataFrame( {
'A': [1,1,1,1,2,2,2,3,3,4,4,4],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1]
} );
df
A B C
0 1 5 1
1 1 5 1
2 1 6 1
3 1 7 1
4 2 5 1
5 2 6 1
6 2 6 1
7 3 7 1
8 3 7 1
9 4 6 1
10 4 7 1
11 4 7 1
Run Code Online (Sandbox Code Playgroud)
我想有另一个列存储固定(两个)A和B的C值之和的值.即,类似于:
A B C D
0 1 5 1 2
1 1 5 1 …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框
>>> df = pd.DataFrame({'user_id':['a','a','s','s','s'],
'session':[4,5,4,5,5],
'revenue':[-1,0,1,2,1]})
>>> df
revenue session user_id
0 -1 4 a
1 0 5 a
2 1 4 s
3 2 5 s
4 1 5 s
Run Code Online (Sandbox Code Playgroud)
和会话和收入的每个值代表了一种类型的,我要统计每个种类的数量表示的数量revenue=-1和session=4的user_id=a为1.
我发现简单的调用count()函数,因为groupby()无法输出我想要的结果.
>>> df.groupby('user_id').count()
revenue session
user_id
a 2 2
s 3 3
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我有一个数据框,我pandas.groupby在特定列上使用它,然后对生成的组运行聚合统计(平均值、中位数、计数)。我想将某些列值视为由 groupby 生成的同一组的成员,而不是用于分组的列中每个不同值的不同组。我正在考虑如何完成这样的事情。
例如:
>> my_df
ID SUB_NUM ELAPSED_TIME
1 1 1.7
2 2 1.4
3 2 2.1
4 4 3.0
5 6 1.8
6 6 1.2
Run Code Online (Sandbox Code Playgroud)
因此,而不是典型的行为:
>> my_df.groupby([SUB_NUM]).agg([count])
ID SUB_NUM Count
1 1 1
2 2 2
4 4 1
5 6 2
Run Code Online (Sandbox Code Playgroud)
我希望将某些值([1, 2] 中的 SUB_NUM)作为一组进行计算,因此会生成如下所示的内容:
>> # Some mystery pandas function calls
ID SUB_NUM Count
1 1, 2 3
4 4 1
5 6 2
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢!
我需要按值计算数据框中两列的实例.我通过使用组和大小获得相同,但我想吐出1.每个列组合中的平坦值2."最后计数"列的名称(另请参阅下面的我想要的内容).
df = pd.DataFrame([[1.1, 1.1, 1.1, 2.6, 2.5, 3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3], list('AAABBBBABCBDDD'), [1.1, 1.7, 2.5, 2.6, 3.3, 3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8], ['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','3','3','2','4','2','5','3','6','3','5','1','1','1']]).T
df.columns = ['col1','col2','col3','col4','col5']
df.groupby(['col5', 'col2']).size()
# this gives
col5 col2 <Note that this is unnamed>
1 A 1
D 3
2 B 2
3 A 3
C 1
4 B 1
5 B 2
6 B 1
dtype: int64
What I want -:
col5 col2 count_instances_of_this_combination
1 A 1
1 D 3
2 B 2
3 A 3
3 C 1
4 B …Run Code Online (Sandbox Code Playgroud)