ように私は私がDFを持っている日時、異なるIDと異なる値 としてIDEXとのデータフレームを持っている:私はピボットとして、このデータの表現をしたいパンダピボット操作は、最後の行の値を持つNoneを交換しないで
data = [
{ 'datetime_start' : "2017-03-15 14:31:20.507", "id" : "usr_21", "value": "-1.286452"},
{ 'datetime_start' : "2017-03-16 15:17:45.550", "id" : "usr_15", "value": "-2.349203"},
{ 'datetime_start' : "2017-03-17 14:20:47.437", "id" : "usr_13", "value": "-2.397038"},
{ 'datetime_start' : "2017-03-19 09:43:47.262", "id" : "usr_12", "value": "-1.250512"},
{ 'datetime_start' : "2017-03-19 15:18:47.941", "id" : "usr_21", "value": "-0.681998"},
{ 'datetime_start' : "2017-03-19 20:03:52.905", "id" : "usr_15", "value": "-1.018452"},
{ 'datetime_start' : "2017-03-22 13:40:48.178", "id" : "usr_21", "value": "-1.531373"},
{ 'datetime_start' : "2017-03-22 19:54:48.320", "id" : "usr_18", "value": "-3.789466"},
{ 'datetime_start' : "2017-03-23 13:53:48.789", "id" : "usr_21", "value": "-1.288360"},
{ 'datetime_start' : "2017-03-24 15:54:48.649", "id" : "usr_21", "value": "0.213171"},
{ 'datetime_start' : "2017-03-25 17:53:48.422", "id" : "usr_13", "value": "-2.020710"},
{ 'datetime_start' : "2017-03-26 06:10:48.197", "id" : "usr_12", "value": "-1.484709"},
{ 'datetime_start' : "2017-03-15 14:31:20.507", "id" : "usr_21", "value": "-1.286452"},
{ 'datetime_start' : "2017-03-16 15:18:45.550", "id" : "usr_18", "value": "-2.349203"},
{ 'datetime_start' : "2017-03-17 14:18:47.437", "id" : "usr_11", "value": "-2.397038"},
{ 'datetime_start' : "2017-03-19 09:48:47.262", "id" : "usr_15", "value": "-1.250512"},
{ 'datetime_start' : "2017-03-19 15:18:47.941", "id" : "usr_21", "value": "-0.681998"},
{ 'datetime_start' : "2017-03-19 20:03:52.905", "id" : "usr_13", "value": "-1.018452"},
{ 'datetime_start' : "2017-03-22 13:53:48.178", "id" : "usr_21", "value": "-1.531373"},
{ 'datetime_start' : "2017-03-22 19:53:48.320", "id" : "usr_18", "value": "-3.789466"},
{ 'datetime_start' : "2017-03-23 13:53:48.789", "id" : "usr_21", "value": "-1.288360"},
{ 'datetime_start' : "2017-03-24 15:53:48.649", "id" : "usr_11", "value": "0.213171"},
{ 'datetime_start' : "2017-03-25 16:53:48.422", "id" : "usr_13", "value": "-2.020710"},
{ 'datetime_start' : "2017-03-26 06:08:48.197", "id" : "usr_15", "value": "-1.484709"}
]
df = pd.DataFrame(data)
df['datetime_start'] = pd.to_datetime(df['datetime_start'])
table = pd.pivot_table(df, values='value', index='id'],
columns=['index'], aggfunc=np.sum)
ません値がない場合ので、各(ID、日時)のために、私たちは価値 を持っています210
は、このルールをなし値を交換するエレガントな方法はあります:伝播のこの種として
if value(id_i, datetime_i) == None :
if value(id_i, datetime_i-1) != 0 :
value(id_i, datetime_i) = value(id_i, datetime_i-1)
else:
value(id_i, datetime_i) = 0
:
申し訳ありませんが、最初の行は '0,0、None、-2.397038、-2.397038、None、None、...'ですか?または最終的にNaNはありませんか? – jezrael
はい、0と値も伝播する必要があります。 いいえもう分かりません:) – slideWXY