我想改善groupby蟒蛇熊猫的时间.我有这个代码:
df["Nbcontrats"] = df.groupby(['Client', 'Month'])['Contrat'].transform(len)
Run Code Online (Sandbox Code Playgroud)
目标是计算客户在一个月内签订的合同数量,并将此信息添加到新列(Nbcontrats)中.
Client:客户端代码Month:数据提取月份Contrat: 合同编号我想改善时间.下面我只使用我的实际数据的一个子集:
%timeit df["Nbcontrats"] = df.groupby(['Client', 'Month'])['Contrat'].transform(len)
1 loops, best of 3: 391 ms per loop
df.shape
Out[309]: (7464, 61)
Run Code Online (Sandbox Code Playgroud)
如何改善执行时间?
我有一个名称(person_name),日期和颜色(shirt_color)作为列的数据集.
每个人在特定的日子穿着具有特定颜色的衬衫.天数可以是任意的.
例如输入:
name day color
----------------
John 1 White
John 2 White
John 3 Blue
John 4 Blue
John 5 White
Tom 2 White
Tom 3 Blue
Tom 4 Blue
Tom 5 Black
Jerry 1 Black
Jerry 2 Black
Jerry 4 Black
Jerry 5 White
Run Code Online (Sandbox Code Playgroud)
我需要找到每个人最常用的颜色.
例如结果:
name color
-------------
Jerry Black
John White
Tom Blue
Run Code Online (Sandbox Code Playgroud)
我正在执行以下操作来获得结果,这很好但很慢:
most_frquent_list = [[name, group.color.mode()[0]]
for name, group in data.groupby('name')]
most_frquent_df = pd.DataFrame(most_frquent_list, columns=['name', 'color'])
Run Code Online (Sandbox Code Playgroud)
现在假设我有一个包含500万个唯一名称的数据集.执行上述操作的最佳/最快方式是什么?