python - 根据条件修改 Wide Pandas 数据框
问题描述
我正在尝试使用 pandas 库根据 python 中的条件编辑各种时间序列数据的值。数据是给定日期的卫星观测值(见下图)。第一列是唯一的 id,所有后续列都是日期值。这意味着每一行都是该特定 ID 的时间序列。
这个想法是这样的:
如果n1是当前观测值,n2是下一个观测值,n3是之后的观测值,则:
if ((n2 - n1) > 0.3) and (n3 >= (0.9 * n1)):
n2 = (n1 + n3) / 2
需要明确的是,n1、n2、n3 是该数据帧的前三个值,而不是属性。对于附加的示例,n1 将是 0.25916876,n2 将是 0.25916876,n3 将是 0.23824187。
如何使用此规则修改我的数据框?这可以通过列表理解来完成吗?
解决方案
我假设您想对数据框的每一列执行此过程。这是使用我创建的用于复制该过程的假数据框:
# Iterate over each column
for c in list(df):
df[c] = np.where((df[c]-df[c].shift(1, fill_value=0)>0.3) &
(df[c].shift(-1, fill_value=0) > 0.9*df[c].shift(1, fill_value=0)),
np.mean(df[c].shift(-1, fill_value=0),df[c].shift(1, fill_value=0)),
df[c])
推荐阅读
- python-3.x - Python - 将 2 个 SVG 元素合并为一个 SVG 元素
- flutter - Is there a way to ClipPath around a BottomAppBar?
- wpf - 当动画在屏幕上不可见时,WPF 会停止动画
- c# - 在资源字典中存储标记
- google-api - 如何从 google api 访问所有用户设置?
- gremlin - 如何使用 gremlin QL 递归地获取所有子顶点及其边缘(两者的属性)?
- android - 为什么我的图像变得模糊?带有约束布局的动画
- google-cloud-platform - GCP Nat 超时
- python - 大型数据集的 for-loop 替代方案以提高计算速度
- batch-file - 无法获取与当前 Java 虚拟机关联的唯一 Console 对象