我有一个包含2列和3000行的数据框。
第一列表示时间步长。例如,第一行是0,第二行是1,...,最后一行是2999。
第二栏代表压力。当我们遍历行时压力会发生变化,但会显示重复行为。所以我们每走几步都会看到它达到最小值(即375),然后再次上升,然后又升至375等。
我想在Python中做的是迭代行并看到: 1)在哪个时间步骤,我们看到压力是最小的
2)找出最小值之间的频率。
import numpy as np
import pandas as pd
import numpy.random as rnd
import scipy.linalg as lin
from matplotlib.pylab import *
import re
from pylab import *
import datetime
df = pd.read_csv('test.csv')
row = next(df.iterrows())[0]
dataset = np.loadtxt(df, delimiter=";")
df.columns = ["Timestamp", "Pressure"]
print(df[[0, 1]])
答案 0 :(得分:2)
您不需要按行迭代,您可以将整个列与min
值进行比较以屏蔽它,然后您可以使用掩码来查找时间步长diff
:
数据设置:
In [44]:
df = pd.DataFrame({'timestep':np.arange(20), 'value':np.random.randint(375, 400, 20)})
df
Out[44]:
timestep value
0 0 395
1 1 377
2 2 392
3 3 396
4 4 377
5 5 379
6 6 384
7 7 396
8 8 380
9 9 392
10 10 395
11 11 393
12 12 390
13 13 393
14 14 397
15 15 396
16 16 393
17 17 379
18 18 396
19 19 390
通过将列与min
值进行比较来屏蔽df:
In [45]:
df[df['value']==df['value'].min()]
Out[45]:
timestep value
1 1 377
4 4 377
我们可以使用loc
的掩码来查找相应的'时间步长'值和使用diff
来查找间隔差异:
In [48]:
df.loc[df['value']==df['value'].min(),'timestep'].diff()
Out[48]:
1 NaN
4 3.0
Name: timestep, dtype: float64
您可以将上面的1/60
除以找到频率为1分钟或您想要的任何频率单位