gpt4 book ai didi

python - Pandas :如何对列值拆分的子数据框应用操作

转载 作者:行者123 更新时间:2023-12-05 03:33:55 25 4
gpt4 key购买 nike

我有维护数据(来自 csv 文件或其他来源),数据格式如下:

Date        Equipment_id    sensor_reading  failure
2017-01-01 eq_1 1.0 0
2017-01-03 eq_1 0.5 0
2017-01-04 eq_1 1.5 1
2017-01-01 eq_2 Nan Nan
2017-01-02 eq_2 0.3 0
2017-01-03 eq_2 1.0 0

我想对这些数据应用插值或滚动窗口等转换,我可以用 pandas 做到这一点。但是,如果我使用 df.interpolate() 为例,即使数据来自不同的 equipment_id,它也会进行插值。可能有一些方法可以避免这种情况,但它看起来很复杂,而且我可能会错过错误。

我考虑使用 for 循环来拆分数据帧:

data_dict = {}
for equipment_id in df[Equipment_id].unique():
data_dict[equipment_id] = df.loc[df['Equipment_id']==equipment_id]

然后在每个子数据帧上使用 df.interpolate() 或 df.rolling(window_size).min() 之类的操作,然后转换为 numpy 数组并将它们连接起来形成我的训练集。

但我真的不知道幕后发生了什么。所以我想知道让这些子数据帧单独工作是否会导致内存问题或进行更长时间的计算。我也不知道是否有更简洁或更规范的方法来做到这一点。

最佳答案

如果我没理解错的话,您想对每个 id 分别应用滚动窗口/函数。在这种情况下,groupby() 和 apply() 会有所帮助。

例如,这将为计算 3 行窗口总和的每个 id 应用滚动窗口:

df.groupby(equipment_id).rolling(3).sum()

如果你想插值(注意你不需要传递参数):

df.groupby(equipment_id).apply(pd.interpolate)

你也可以混合这些:

df.groupby(equipment_id).rolling(3).apply(pd.interpolate)

关于python - Pandas :如何对列值拆分的子数据框应用操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70259232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com