タイムスタンプインデックスの測定値を含むパケットで構成されるDataFrameがあります。測定セクションの開始および終了を示すフラグパケットがメッセージ内に散在している。この例は、以下:ユニークでないタイムスタンプのPandas DataFrameスライスデータ
dev node meas 0 meas 1 ...
tstp
2016-04-12 03:42:16.238 instr None [val] [val]
2016-04-12 03:42:16.338 cntrl 101 [val] [val]
2016-04-12 03:42:16.442 instr None [val] [val]
2016-04-12 03:42:16.445 instr None [val] [val]
2016-04-12 03:42:16.445 cntrl 101 [val] [val]
2016-04-12 03:42:16.448 instr None [val] [val]
2016-04-12 03:42:16.540 instr None [val] [val]
2016-04-12 03:42:16.600 cntrl 101 [val] [val]
2016-04-12 03:42:16.639 instr None [val] [val]
2016-04-12 03:42:16.741 instr None [val] [val]
2016-04-12 03:42:17.238 instr None [val] [val]
2016-04-12 03:42:17.338 cntrl 102 [val] [val]
2016-04-12 03:42:17.442 instr None [val] [val]
2016-04-12 03:42:17.445 instr None [val] [val]
2016-04-12 03:42:17.445 cntrl 102 [val] [val]
2016-04-12 03:42:17.448 instr None [val] [val]
2016-04-12 03:42:17.540 instr None [val] [val]
2016-04-12 03:42:17.600 cntrl 102 [val] [val]
2016-04-12 03:42:17.639 instr None [val] [val]
2016-04-12 03:42:17.741 instr None [val] [val]
私は何をしようとしていることである:BEGの
for name, group in pkts.groupby('node') :
beg = group.index[0]
end = group.index[-1]
# pseudocode
pkts[ beg:end & pkts.dev=='instr' , 'node' ] = name
直接スライシング:エンドは非一意の値以降は動作しません。誰かがこれを行うにはいくつかの洞察力や良い方法を提供できますか?
UPDATE(明確化):
目的:簡単にノード番号に基づいて、 "INSTR" デバイスからの測定値にアクセスします。 "instr"デバイスがノード値を送信できません。
所望の出力(元々の提案に開いて、目的とする):その後、私はあなたがreset_index
とset_index
によってindex
からMultiindex
を作成することができると思い
dev node meas 0 meas 1 ...
tstp
2016-04-12 03:42:16.238 instr None [val] [val]
2016-04-12 03:42:16.338 cntrl 101 [val] [val]
2016-04-12 03:42:16.442 instr 101 [val] [val]
2016-04-12 03:42:16.445 instr 101 [val] [val]
2016-04-12 03:42:16.445 cntrl 101 [val] [val]
2016-04-12 03:42:16.448 instr 101 [val] [val]
2016-04-12 03:42:16.540 instr 101 [val] [val]
2016-04-12 03:42:16.600 cntrl 101 [val] [val]
2016-04-12 03:42:16.639 instr None [val] [val]
2016-04-12 03:42:16.741 instr None [val] [val]
2016-04-12 03:42:17.238 instr None [val] [val]
2016-04-12 03:42:17.338 cntrl 102 [val] [val]
2016-04-12 03:42:17.442 instr 102 [val] [val]
2016-04-12 03:42:17.445 instr 102 [val] [val]
2016-04-12 03:42:17.445 cntrl 102 [val] [val]
2016-04-12 03:42:17.448 instr 102 [val] [val]
2016-04-12 03:42:17.540 instr 102 [val] [val]
2016-04-12 03:42:17.600 cntrl 102 [val] [val]
2016-04-12 03:42:17.639 instr None [val] [val]
2016-04-12 03:42:17.741 instr None [val] [val]
簡単な '.fillna('ffill ')で問題を解決できますか?達成しようとしていることを抽象的に表現できますか? –
私はデータを整列しようとしています。したがって、測定装置からノード '101'で測定値を選択する場合は、ラベルが付けられます。これらの測定値は、制御装置の最初と最後の101の間になります。 –