首页 > 解决方案 > 熊猫列过滤器慢

问题描述

我试图隔离数据框中的名称组,然后计算第二列中的条目数。我的代码运行起来非常慢,因为行数达到 500k。这是我想要完成的一个例子。

import pandas as pd
import numpy as np

data = [
    ['tom', 0], 
    ['nick', 1], 
    ['juli', 2],
    ['tom', 3], 
    ['nick', 1], 
    ['juli', 2],
    ['tom', 1], 
    ['nick', 0], 
    ['juli', 1],
    ['tom', 3], 
    ['nick', 2], 
    ['juli', 2],
    ['tom', 2], 
    ['nick', 0], 
    ['juli', 0],
    ['tom', 1], 
    ['nick', 1], 
    ['juli', 1]
] 

df = pd.DataFrame(data, columns = ['name', 'moves'])

df

    name  moves
0    tom      0
1   nick      1
2   juli      2
3    tom      3
4   nick      1
5   juli      2
6    tom      1
7   nick      0
8   juli      1
9    tom      3
10  nick      2
11  juli      2
12   tom      2
13  nick      0
14  juli      0
15   tom      1
16  nick      1
17  juli      1

我试过的:

movement_data=np.zeros((len(df.name.unique()),4))

for u in df.name.unique():
    name_data=df[df.name==u]
    i=0
    movement_data[i][
        name_data.moves.value_counts().index.values
    ]=name_data.moves.value_counts().values
    print(u,movement_data[i,:])
    i=i+1

这输出:


tom [1. 2. 1. 2.]
nick [2. 3. 1. 2.]
juli [1. 2. 3. 2.]

我看过几篇关于 isin 函数的帖子,但是我不确定它如何应用于这个用例。

标签: pythonpandasdataframe

解决方案


推荐阅读