簡體   English   中英

基於另一個列值查找最小值並合並到 1 個數據幀的循環?

[英]A loop to find min values based on another column value, and merge into 1 dataframe?

想象一個像這樣的數據框:

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 個每天都在變化的行業。

IIUC,你想要groupbytransform

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
df['B']=df['Amount outstanding'] 
df.groupby('Industry', group_keys=False).apply(lambda x: x.loc[x.B.idxmin()])

這為您提供了一個新的數據框,僅在 Amount 列中具有最小值。 如果您願意,現在可以刪除“B”列

df.loc[df.groupby('Industry')['Amount outstanding'].idxmin()]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM