python - 加速数据帧循环

标签 python pandas dataframe

我在 pandas 数据帧上运行两个不同但非常相似的循环,我想知道是否有某种 groupby 操作可以让我通过避免循环来加快速度。

for x in df.var1:
    df[df.var1==x, 'var2'] = np.max(df[df.var1==x, 'var2'])

也就是说,假设有多个行具有相同的 var1 值,我想将所有这些行的 var2 的值设置为最大值var2 获取所有这些行。

我觉得我应该能够在没有 for 循环的情况下做到这一点,但出于某种原因我不知道该怎么做。想法?

最佳答案

您似乎想用该列中的最大值替换该列,并按另一列中的值分组。你应该能够使用 groupby()transform(max) 来得到你想要的:

>>> import pandas as pd
>>> df = pd.DataFrame({"var1": [1, 1, 2, 2, 3, 3], 'var2': [1, 2, 3, 4, 5, 6]})
>>> df
   var1  var2
0     1     1
1     1     2
2     2     3
3     2     4
4     3     5
5     3     6
>>> df['var2'] = df.groupby('var1').transform(max)
>>> df
   var1  var2
0     1     2
1     1     2
2     2     4
3     2     4
4     3     6
5     3     6

关于python - 加速数据帧循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32573221/

相关文章:

python - 在Visual Studio的Windows上安装MPIR时遇到问题吗?

python - 无法在 Ubuntu 服务器中更新 Pandas

python - 将具有多个时区的 pandas 列转换为单个时区

python - 在 pandas.DataFrame 中过滤索引级别

python - 如何矢量化 3D Numpy 数组

python - 加权平均 Pandas

具有两个或多个键的 Pandas 字典

python - 无法用所有列的列值填充缺失值

python - 通过 groupby 建立开始/结束日期

python - 除非我退出并返回,否则 Pygame 矩形不会出现