Pandas滚动申请列表元素

2024-04-26 18:08:31 发布

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

我已经积累了计数器,它的元素是列表。与前一行相比,每个列表元素都是累加的。你知道吗

import pandas as pd
d=pd.DataFrame({'counter': {0: [1,0,2], 1:[1,2,3], 2:[4, 4, 5]}})

我可以使用apply函数获得maxcounter。你知道吗

def maxf(x): return max(x.counter)
d['maxcounter']=d.apply(lambda row: maxf(row), axis=1)  

现在我还想得到字段“max\u increment”,得到当前行和前一行之间的差值,然后计算最大值。我们可以用你的申请吗?你知道吗

预期输出如下。你知道吗

     counter    maxcounter  increase_max
0   [1, 0, 2]   2   NaN 
1   [1, 2, 3]   3   2
2   [4, 4, 5]   5   3

注:计数器是一个列表,每个元素从分离的传感器开始递增。 这个结构,我们得到的不是优化的。你知道吗

     counter    counter_incr    increase_max   max_incr_index
0   [1, 0, 2]   
1   [1, 2, 3]   [0, 2, 1]         2                1
2   [4, 4, 5]   [3, 2, 2]         3                0

Tags: import元素pandas列表ascounter计数器max
1条回答
网友
1楼 · 发布于 2024-04-26 18:08:31

get the difference between current row and the previously row

因为您的类型不是数字(它是一个列表),所以最简单的方法似乎是执行^{},然后执行一个从上一个元素减去每个元素的操作:

import numpy as np
>>> [(np.array(c) - np.array(p)) \
    for c, p in zip(d.counter, d.counter.shift(-1))]
[array([ 0, -2, -1]), array([-3, -2, -2]), array([ nan,  nan,  nan])]

相关问题 更多 >