在函数Python中应用max-min和last索引

下面的代码以月份为单位将数据分隔开来,并且month\u发生了变化Val_日期是相关的,Val_日期应该是值索引的匹配日期

因此,多维数组中的每一行都应该表示一个月,因此第一行[100123135.3139.05156.08163.88173.72]用于2015年11月,第六行[163173.12]用于2016年2月等

它输出每个月的最后一个索引,因此第一行的输出将是123。函数的输出直到到达agg.数组([list([100.0,123.0,135.3,139.05,156.08]),list([0]),list([0]),list([163.88,173.72]),0],dtype=object)

如何将代码添加到现有代码中,以便它输出每个数组的max-minlast index。产生以下预期输出

将numpy作为np导入
作为pd进口熊猫
Values=np.array(
[
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
[100, 123, 135.3, 139.05, 156.08, 163.88, 173.72],
]
)
Values=np.array([arr[i:]表示i,枚举中的arr(Values.tolist())]))
Val_日期=[
&“2015-11-01 01:03:00”;,
&“2015-11-08 12:56:00”;,
&“2015-11-11 02:30:00”;,
&“2015-11-1404:23:00”;,
&“2015-11-1405:23:00”;,
&“2016-02-11 02:00:00”;,
&“2016-02-15 15:00:00”;,
]
df=pd.DataFrame({quot;dt":Val_dates,"Val":Values}).aType({quot;dt":"datetime64"})
idx=pd.日期范围(“2015-11-01 00:00:00”和“2016-03-01 00:00:00”,频率=“MS”)
展示(
df.groupby(pd.Grouper(freq="MS",key="dt")["val"]
.应用(lambda x:x.head(1).挤压()[:len(x)],如果len(x)不是[0])
.reindex(idx,填充值=0)
.to_numpy()
阿格先生(
#获取每个组的“持续时间”列的最大值
最大持续时间=(λx:np.max(x)),
#获取每个组的持续时间列的最小值
最小持续时间=(λx:np.min(x)),
#最后索引
最后的指数=(λx:x[len(x)-1]),
)
)

预期产出:

因此,考虑到代码的最后一个功能部分输出的内容:

将numpy作为np导入
作为pd进口熊猫
...
arr=(
df.groupby(pd.Grouper(freq="MS",key="dt")["val"]
.应用(lambda x:x.head(1).挤压()[:len(x)],如果len(x)不是[0])
.reindex(idx,填充值=0)
.to_numpy()
)
打印(arr)
#输出列表列表和一个整数
[[100.0, 123.0, 135.3, 139.05, 156.08], [0], [0], [163.88, 173.72], 0]

你可以试试这个:

new_df=pd.DataFrame({dates":idx})
对于i,枚举(列表(arr))中的项:
如果不存在(项目,列表):
项目=[项目]
新位置[i,“最小值”]=最小值(项目)
新位置[i,“最大值”]=最大值(项目)
新的位置[i,“lastindex”]=项目[len(项目)-1]

然后:

打印(新)
#输出
日期最短最长索引
0 2015-11-01  100.00  156.08     156.08
1 2015-12-01    0.00    0.00       0.00
2 2016-01-01    0.00    0.00       0.00
3 2016-02-01  163.88  173.72     173.72
4 2016-03-01    0.00    0.00       0.00

发表评论