【发布时间】:2019-10-17 01:51:06
【问题描述】:
我在 python 中使用 pandas 编写了一个由数字和字符串组成的数据框:
import pandas as pd
import numpy as np
d = {'col1': [1, 5,1,5,1,5,1,5], 'col2': [20,20,40,40,20,20,40,40],\
'col3': np.arange(1,9)*0.1,\
'col4':['Jen','Ross','Chan','Mon','Joe','Phebe','Janice','Gunter']}
df = pd.DataFrame(data=d)
数据框如下:
col1 col2 col3 col4
0 1 20 0.1 Jen
1 5 20 0.2 Ross
2 1 40 0.3 Chan
3 5 40 0.4 Mon
4 1 20 0.5 Joe
5 5 20 0.6 Phoebe
6 1 40 0.7 Janice
7 5 40 0.8 Gunther
使用 groupby,我想为每个唯一的 (x,y) 对找到 col3 的最小值,其中 x 属于 col1,y 属于 col2。我还需要知道 col4 中导致这样一个分钟的相应名称是什么。我做到了:
df2=df.groupby(['col1','col2']).min()
print(df2)
我明白了:
col1 col2 col3 col4
1 20 0.1 Jen
40 0.3 Chan
5 20 0.2 Phoebe
40 0.4 Gunther
如您所见,最后两行是错误的。查看表中的 (5,20) 对,最小值为 0.2(正确),但出现在 ross(不是 Phoebe)。我怎样才能解决这个问题?
【问题讨论】:
-
DataFrameGroupBy.min()为您提供 each 组的 each 非分组列的最小值。它不会为您提供特定列最小的行。 -
您的代码在哪里指定您尝试获取
col3的最小值? -
GroupBy.min独立聚合每一列。['Phoebe', 'Ross']的最小值是'Phoebe'。如果您需要行绑定解决方案,请参阅发布的答案
标签: python python-3.x pandas dataframe