2016-11-30 45 views
1

我有一個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]]) 

回答

2

你並不需要遍歷行明智的,你可以對min值整列比較,以掩蓋它,那麼你可以使用面膜找時間步長diff

數據建立:

In [45]:  
df[df['value']==df['value'].min()] 

Out[45]: 
    timestep value 
1   1 377 
4   4 377 
0:

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

我們可以使用掩模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劃分上述查找頻率WRT爲1分鐘或任何頻率你渴望的單位

+0

感謝您的回答EdChum。我在想,如何根據我已有的'value'字段賦值壓力值?你用'np.random.randit'來舉個例子,但我不知道如何用現有的做。 – joasa

+0

對不起,我的df只是一個模型,因爲我沒有你的數據,你可以用你的代碼替換我的代碼中的列名稱 – EdChum

+0

我還有一個問題:如何掩蓋DF而不是最小值I想要將列與特定值(例如380)進行比較? – joasa