【问题标题】:pandas getting max and min for a specific other column value熊猫获取特定其他列值的最大值和最小值
【发布时间】:2018-07-05 14:30:33
【问题描述】:

我有以下示例数据集。

 raw_data = {'name': ['Willard Morris', 'Al Jennings', 'Omar Mullins', 'Spencer 
 McDaniel'],
            'age': [20, 19, 22, 21],
            'favorite_color': ['blue', 'blue', 'yellow', "green"],
            'grade': [88, 92, 95, 70]}

 df = pd.DataFrame(raw_data)
 df.head()

我有兴趣找到特定颜色的最高、最低等级,比如“蓝色”,我怎样才能找到它。

我的解决方案如下......有没有更好的方法。我拥有庞大的数据集性能也是选择可用选项时的一个标准。

for i in df.index:
    if df.at[i, 'server_ip'] == 'blue':
        if min_grade > df.at[i,'grade']:
           min_grade = df.at[i,'grade']
        if max_grade < df.at[i,'grade']:
           max_grade = df.at[i,'grade']

【问题讨论】:

标签: pandas


【解决方案1】:

我个人会在这里使用 .loc

df.loc[df['favorite_color']=='blue','grade'].max()
df.loc[df['favorite_color']=='blue','grade'].min()

编辑 1

如果不想搜索两次,先保存.loc的结果再进行聚合

data = df.loc[df['favorite_color']=='blue','grade']
min = data.min()
max = data.max()

编辑 2

如果您想搜索每种颜色的最大值和最小值,请使用groupby

grouped = df.groupby('favorite_color')['grade']
max = grouped.max()
min = grouped.min()

【讨论】:

  • 当我们找到最大值时,为什么我们不能也找到最小值?。我们不能停止多次迭代吗?。
  • 查看编辑...也可以随意点击左侧的绿色复选标记!
  • 我正在寻找一种解决方案来找到所有最喜欢的颜色唯一值的最大值和最小值。有什么解决办法吗?
  • 在这种情况下,你应该使用 groupby
猜你喜欢
  • 2020-04-28
  • 2017-07-25
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2017-12-18
相关资源
最近更新 更多