我在一只熊猫上运行两个不同但非常相似的循环,我想知道是否有某种群组操作可以让我通过避免循环来加快速度。
for x in df.var1:
df[df.var1==x, 'var2'] = np.max(df[df.var1==x, 'var2'])也就是说,考虑到有多个具有相同var1值的行,我希望将所有这些行的var2值设置为var2对所有这些行获得的最大值。
我觉得我应该能够在不使用for循环的情况下做到这一点,但出于某种原因,我不知道如何做到这一点。想法?
发布于 2015-09-14 20:46:57
看起来,您希望用该列中的最大值替换一列,并按另一列中的值分组。您应该能够使用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 6https://stackoverflow.com/questions/32573221
复制相似问题