如何在数据框中找到条件滚动平均值?

2024-03-29 15:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据帧是:

st      ft  value
10      12       10
9       13       20
8       9        30
7       8        40
6       7        50
5       8        60
4       5        70
3       4        80
2       4        90
1       2       100

创建上述数据帧的代码:

数据框=pd.数据帧([[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [12, 13, 9, 8, 7, 8, 5, 4,4,2], [10,20,30,40,50,60,70,80,90,100]]).T.rename(列={0:“st”,1:“ft”,2:“value”})

在数据帧中有三列st(实验开始时间)、ft(实验结束时间)和value(观察值)。完成时间>开始时间。我想创建一个新列,该列具有以前观察到的值。但取最后一个观测值的条件是- 完成时间(最后一行)<;=开始时间(当前行),以便完成时间最长。你知道吗

应用上述逻辑,输出应该如下所示-

st        ft    value   last_observed_value
10        12    10         30.0
9         13    20         30.0
8         9     30         40.0
7         8     40         50.0
6         7     50         70.0
5         8     60         70.0
4         5     70         80.0
3         4     80        100.0
2         4     90        100.0
1         2     100       None

我们怎么能用Python的方式来做呢?你知道吗


Tags: 数据代码ltnonevalue方式时间逻辑
1条回答
网友
1楼 · 发布于 2024-03-29 15:29:04
df = pd.DataFrame([[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], [12, 13, 9, 8, 7, 8, 5, 4,4,2], [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]]).T.rename(columns={0:"st", 1:"ft", 2:"value"})

df['last_observed_value'] =  -10000
for i in range(df.st.size - 1):
    for j in range(i,df.st.size - 1):
        if(df.st[j]< df.ft[j+1]):
            df['last_observed_value'][i] =  df.value[j+1]
        if(df.st[j] == df.ft[j+1]):
            df['last_observed_value'][i] =  df.value[j+1]
            break

相关问题 更多 >