如何使用pandas python根据电压周期计算距离之和

z18hc3ub  于 2023-06-20  发布在  Python
关注(0)|答案(2)|浏览(60)

我有一个pandas数据框,其中包含电压列和距离列

data = {
    'Voltage': [52.59, 52.59, 51.01, 51.01, 49.63, 49.63, 54.59, 52.59, 51.01, 51.01, 49.63, 49.63],
    'Distance': [0, 0, 2.29, 0, 4.35, 0, 0, 0, 5.00, 0, 4.35, 0]
}

df = pd.DataFrame(data)

在电压我有两个周期一个开始在52.59和结束在49.63在这个范围内我想求和距离和第二个周期开始54.59和结束在49.63求和距离我的预期输出是第一个周期距离6.64和第二个周期距离9.35如何使用python来做提前感谢

4nkexdtk

4nkexdtk1#

计算电压列中的前一行和当前行的差异,以标记当前行的电压大于前一行的行,然后计算这些标记的累积和以创建周期计数器,然后通过该计数器对 Dataframe 进行分组并与总和进行聚合

cycles = df['Voltage'].diff().gt(0).cumsum() + 1
result = df.groupby(cycles)['Distance'].sum()
Voltage
1    6.64
2    9.35
Name: Distance, dtype: float64
q9rjltbz

q9rjltbz2#

Pandas并不是真正需要的。

data = {
    'Voltage': [52.59, 52.59, 51.01, 51.01, 49.63, 49.63, 54.59, 52.59, 51.01, 51.01, 49.63, 49.63],
    'Distance': [0, 0, 2.29, 0, 4.35, 0, 0, 0, 5.00, 0, 4.35, 0]
}

dist = 0
last = 0
count = 0
for v,d  in zip(data['Voltage'],data['Distance']):
    if v > last:
        if dist:
            print( "Cycle", dist )
        dist = 0
    dist += d
    last = v

print( "Cycle", dist )

输出:

Cycle 6.64
Cycle 9.35

相关问题