首页 > 解决方案 > 基于另一个列值查找最小值并合并到 1 个数据帧中的循环?

问题描述

想象一个像这样的数据框:

import pandas as pd
list ={'Security ID':['3e09ax', 'we9lkl', 'as42we','as5322', 'ot24tas', 'c34ci46a8'],
          'Industry':['Airplanes', 'Airplanes', 'Oil', 'Oil', 'Housing', 'Trucking'],
          'Amount outstanding':[33, 31, 39, 21, 29, 29]}
df = pd.DataFrame(list)

'''

最终目标是将每个行业的最低(最小)未偿金额的行返回到每日报告的“最小值”数据框中

基本上是这样,但对于每个行业:

df[df['Amount outstanding'] == df['Amount outstanding'].min()]

第一步是再次将 [Industry] 的唯一值放入列表中,然后生成执行此操作的循环函数。

不知道到底该怎么做。这个数据框实际上是 100,000 行,其中 30 个行业每天都在变化。

标签: pythonpandas

解决方案


IIUC,你想要groupby并且transform

output = df[df['Amount outstanding']==df.groupby('Industry')['Amount outstanding'].transform(min)]

>>> output

  Security ID   Industry  Amount outstanding
1      we9lkl  Airplanes                  31
3      as5322        Oil                  21
4     ot24tas    Housing                  29
5   c34ci46a8   Trucking                  29

推荐阅读