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 函数的帖子,但是我不确定它如何应用于这个用例。
解决方案
推荐阅读
- php - PHP 调用未定义函数 getLine()
- c++ - std::shared_mutex 不与执行 lock_shared() 的线程一起缩放
- python - 用其他列数据的平均值在熊猫中创建一个新列
- autodesk-forge - 在 Forge Viewer 中使用 restoreState 时如何删除所有剖切面
- javascript - 为什么我的 for 循环在我的条件之前退出
- xcode - 时间配置文件中特定方法的 CPU 使用情况图
- javascript - 我的结果不断增加,每次做出新选择时,如何用新结果替换当前结果?
- angular - 提取Zip文件并以角度读取文件内的数据
- mysql - 查找具有多对多关系的第二个表名
- python-3.x - 使用 JiTCDDE 的意外解决方案