首页 > 解决方案 > 如何使用 pandas 操作数组中的数据

问题描述

数据框中有数据,需要比较一列的当前值和另一列的值的先验。当前时间是此数据框中的第 5 行,这是所需的输出:

目标数据被流式传输并捕获到 DataFrame 中,然后将该数组乘以常数以生成另一列,但无法生成第三列comp,该列应将 prod 的当前值与 comp from 的先前值进行比较comp

df['temp'] = self.temp
df['prod'] = df['temp'].multiply(other=const1)

另一位用户建议使用此逻辑,但它会产生错误,因为例程的数组与 DataFrame 的大小不匹配:

for i in range(2, len(df['temp'])):
    df['comp'].append(max(df['prod'][i], df['comp'][i - 1]))

在此处输入图像描述

标签: pandaspython-3.6

解决方案


让我们试试这个,我认为这将捕获您的预期逻辑:

df = pd.DataFrame({'col0':[1,2,3,4,5]
                  ,'col1':[5,4.9,5.5,3.5,6.3]
                  ,'col2':[2.5,2.45,2.75,1.75,3.15]
                  })

df['col3'] = df['col2'].shift(-1).cummax().shift()

print(df)

输出:

   col0  col1  col2  col3
0     1   5.0  2.50   NaN
1     2   4.9  2.45  2.45
2     3   5.5  2.75  2.75
3     4   3.5  1.75  2.75
4     5   6.3  3.15  3.15

推荐阅读