【发布时间】:2021-06-05 20:47:17
【问题描述】:
我有一个包含气体浓度和相应阀门编号的 DataFrame。这些数据是连续采集的,我们来回切换阀门(阀门 = 1 或 2)一段时间,以获得每个阀门值的 10 个循环(总共 20 个循环)。数据的 sn-p 看起来像这样(我有 2,000 多个点,每个阀门每个循环保持大约 90 秒):
gas1 valveW time
246.9438 2 1
247.5367 2 2
246.7167 2 3
246.6770 2 4
245.9197 1 5
245.9518 1 6
246.9207 1 7
246.1517 1 8
246.9015 1 9
246.3712 2 10
247.0826 2 11
... ... ...
我的目标是保存每个阀门循环的最后 N 个点。例如,在阀门=1 的第一个循环中,我想在阀门切换到 2 之前索引并保存最后 N 个点。然后我会保存最后 N 个点并对它们进行平均以找到一个值来表示第一个循环。然后我想再次在valve=1时重复此步骤进行第二个循环。
我目前正在从 Matlab 转换为 Python,所以这是我要翻译的 Matlab 代码:
% NOAA high
n2o_noaaHigh = [];
co2_noaaHigh = [];
co_noaaHigh = [];
h2o_noaaHigh = [];
ind_noaaHigh_end = zeros(1,length(t_c));
numPoints = 40;
for i = 1:length(valveW_c)-1
if (valveW_c(i) == 1 && valveW_c(i+1) ~= 1)
test = (i-numPoints):i;
ind_noaaHigh_end(test) = 1;
n2o_noaaHigh = [n2o_noaaHigh mean(n2o_c(test))];
co2_noaaHigh = [co2_noaaHigh mean(co2_c(test))];
co_noaaHigh = [co_noaaHigh mean(co_c(test))];
h2o_noaaHigh = [h2o_noaaHigh mean(h2o_c(test))];
end
end
ind_noaaHigh_end = logical(ind_noaaHigh_end);
这是我目前对 Python 的了解:
# NOAA high
n2o_noaaHigh = [];
co2_noaaHigh = [];
co_noaaHigh = [];
h2o_noaaHigh = [];
t_c_High = []; # time
for i in range(len(valveW_c)):
# NOAA HIGH
if (valveW_c[i] == 1):
t_c_High.append(t_c[i])
n2o_noaaHigh.append(n2o_c[i])
co2_noaaHigh.append(co2_c[i])
co_noaaHigh.append(co_c[i])
h2o_noaaHigh.append(h2o_c[i])
提前致谢!
【问题讨论】:
标签: python pandas numpy for-loop indexing