2017-09-10 14 views
2

6自由度のセンサからデータを収集しましたが、ここではプロットや最終的な信号処理タスクを実行しようとしています。列ごとのパンダのデータフレームの閾値設定

私はパンダのデータフレームを作成し、タイムスタンプの値である「スタンプ」列に基づいて、しきい値を設定したり、データセットをクリップしようとしています。これまでのところ、私は私のデータフレームを作成している:私を与えた

headers = ["Stamp", "liny1", "linz1", "angy1", "angz1", "linx2", "liny2"] 
df = pd.read_csv("Test2.csv", header=0, names = headers, delimiter = ';') 
df 

:すべてが後のノイズだけであるので、

head of dataframe

私は今、18秒のマークまでのしきい値にデータを願っています。私はパンダのスレッショルド機能を使ってみましたが、それが正しいかどうかはわかりません。誰かが私の間違いを指摘できますか?

私はあなたが boolean indexingをしたいと思います
df_thresh = df.clip(lower=None, upper=18) 

答えて

2

locを使用して19秒未満でデータをフィルタリングしたいと思うようです。

>>> pd.Series(range(16,21)).clip_upper(18) 
0 16 
1 17 
2 18 
3 18 
4 18 
dtype: int64 
+0

あなたの提案が私のために働い:参考

df.loc[df['Stamp'] < 19] # Not sure what units 'Stamp' is in. Seconds? 

が、これはあなたがどこ私はあなたが欲しいとは思わない、あなたのデータを、クリップした場合、あなたがやっていることです。しかし、私はキーエラーが発生しているので、エンコード情報を追加することで修正しました。そしてはい、「スタンプ」は秒です。 –

2

np.random.seed(12) 
headers = ["Stamp", "liny1", "linz1", "angy1", "angz1", "linx2", "liny2"] 
df = pd.DataFrame(np.random.randint(60,size=(5,7)), columns=headers) 
print (df) 
    Stamp liny1 linz1 angy1 angz1 linx2 liny2 
0  11  27  6  49  2  3  3 
1  12  48  22  49  52  5  13 
2  25  34  11  54  10  0  53 
3  40  12  13  18  25  35  36 
4  35  33  30  55  32  18  22 

df1 = df[df['Stamp'] < 19] 
print (df1) 
    Stamp liny1 linz1 angy1 angz1 linx2 liny2 
0  11  27  6  49  2  3  3 
1  12  48  22  49  52  5  13 

またはquery

df1 = df.query("Stamp < 19") 

clip高い18から18としてすべての値を置き換えます

を210
df_thresh = df.clip(lower=None, upper=18) #df.clip_upper(18) 
print (df_thresh) 
    Stamp liny1 linz1 angy1 angz1 linx2 liny2 
0  11  18  6  18  2  3  3 
1  12  18  18  18  18  5  13 
2  18  18  11  18  10  0  18 
3  18  12  13  18  18  18  18 
4  18  18  18  18  18  18  18 
関連する問題