列过滤器

2024-03-29 07:51:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在一个数据帧中隔离名称组,然后计算第二列中的条目数。我的代码运行起来非常慢,因为行数达到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函数的文章,但是我不确定如何将它应用到这个用例中。你知道吗


Tags: nameimportdfdatavalueasnpnick