python : Group rows in dataframe and select abs max value in groups using pandas groupby

标签 python pandas dataframe

我正在寻找以下问题的解决方案:

我有一个 pandas 数据框(版本 0.12.0),例如:

df = pd.DataFrame({
    'Time' : [0.0, 0.0, 0.1, 0.2],
    'Signal_1' : [0, 1, 0, 3],
    'Signal_2' : [1, -1.5, -3, 0],        
    })
>>> print df

   Signal_1  Signal_2  Time
0         0       1.0   0.0
1         1      -1.5   0.0
2         0      -3.0   0.1
3         3       2.0   0.2

现在,我使用 groupby 合并具有相同时间戳的行(在本例中为第一行和第二行)。但是合并的行应该得到组的绝对最大值。因此,我正在搜索一个函数 absmax() 来获取以下分组数据框:

>>> df = df.groupby('Time').absmax()
   Signal_1  Signal_2  Time
0         1      -1.5   0.0
1         0      -3.0   0.1
2         3       2.0   0.2

编辑:谢谢 ;-)

最佳答案

你真的很亲密-需要idxmax对于指数:

df = df.loc[df.groupby('Signal_1')['Time'].idxmax()]
print (df)
   Signal_1  Signal_2  Time
2         0      -3.0   0.1
1         1      -1.5   0.0
3         3       2.0   0.2

或者可能需要:

df = df.loc[df.groupby('Time')['Time'].apply(lambda x: x.abs().idxmax())]
print (df)
   Signal_1  Signal_2  Time
0         0       1.0   0.0
2         0      -3.0   0.1
3         3       2.0   0.2

或者:

df = df.loc[df.groupby('Time')['Time'].idxmax()]
print (df)
   Signal_1  Signal_2  Time
0         0       1.0   0.0
2         0      -3.0   0.1
3         3       2.0   0.2

关于 python : Group rows in dataframe and select abs max value in groups using pandas groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43936521/

相关文章:

python - 为什么我用这个 python 循环泄漏内存?

python - 如何在 docker 容器中使用数据?

python - 如何使用字典理解+ if/else 更改字典中的键值?

python - 计算 Dataframe 一个月中下第三个星期五之前的天数

python - 使用键创建字典,因为文件名值是内容

python - 在 python 中向数据帧添加新列时出现错误 "NameError: name ' newaxis' is not Defined

python - Pandas 将列类型从列表转换为 np.array

python - Python中的频繁模式挖掘

python - 获取任意文件类型的缩略图

python - 在 Python/Pandas 中读取带有缺失值的空格分隔文件