pandas.DataFrame.resample
を使用して、不足している時間を入力できます。注意すべき点は、データフレームにpandas.DateTimeIndex
が必要であることです。あなたのケースでは、時間はエポックから数秒で浮動小数点として格納される可能性があります。これは、再サンプリングの前に変換する必要があります。この操作を実行する関数を次に示します。
コード:
import datetime as dt
import pandas as pd
def resample(dataframe, time_column, sample_period):
# make a copy of the dataframe
dataframe = dataframe.copy()
# convert epoch times to datetime
dataframe.time = dataframe.time.apply(
lambda ts: dt.datetime.fromtimestamp(ts))
# make the datetimes into an index
dataframe.set_index(time_column, inplace=True)
# resample to desired period
dataframe = dataframe.resample(sample_period).asfreq().reset_index()
# convert datetimes back to epoch
epoch = dt.datetime.fromtimestamp(0)
dataframe.time = dataframe.time.apply(
lambda ts: (ts - epoch).total_seconds())
return dataframe
テストコード:
values = [
(1488771900.10, 'a'),
(1488771900.20, 'b'),
(1488771900.30, 'c'),
(1488771900.60, 'f'),
]
columns = ['time', 'value']
df = pd.DataFrame(values, columns=columns)
print(df)
new_df = resample(df, 'time', '100ms')
print(new_df)
結果:
time value
0 1.488772e+09 a
1 1.488772e+09 b
2 1.488772e+09 c
3 1.488772e+09 f
time value
0 1.488772e+09 a
1 1.488772e+09 b
2 1.488772e+09 c
3 1.488772e+09 NaN
4 1.488772e+09 NaN
5 1.488772e+09 f
ポストが働いてきたはずですリンクされ、生投稿してくださいデータ、dfを作成するためのコード、あなたの試行およびエラー – EdChum