熊猫:迭代行并找出出现的频率

时间:2016-11-30 14:08:11

标签: python loops pandas

我有一个包含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]])

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分钟或您想要的任何频率单位