想象一个 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]的Unique Values放入列表中,然后生成一个循环函数来执行此操作。
不知道具体如何操作。这个数据框实际上是100,000行,包含30个每天都在变化的行业。
3条答案
按热度按时间wfauudbj1#
IIUC,您需要
groupby
和transform
:c0vxltue2#
这将为您提供一个新的 Dataframe ,该 Dataframe 在“未付金额”列中只有最小值。如果需要,您可以立即删除“B”列
fkaflof63#
简洁而有表现力;
transform
和apply
可能不适当地慢,特别是对于大 Dataframe 。分成几部分的:
***请注意:***确保
'Amount outstanding'
列的dtype
是一个数字;如果它是object
,它将比所需的慢几个数量级。我遇到过类似的情况,在1.9M行,30列的 Dataframe 上处理resample
;在将列从object
转换为float
后,运行了几分钟而未完成的代码在几秒钟内完成。