:私は必要なもの塗りつぶし欠損値(パンダ)
email user_name sessions ymo
[email protected] JD 1 2015-03-01
[email protected] JD 2 2015-05-01
:
all_ymo
[Timestamp('2015-01-01 00:00:00'),
Timestamp('2015-02-01 00:00:00'),
Timestamp('2015-03-01 00:00:00'),
Timestamp('2015-04-01 00:00:00'),
Timestamp('2015-05-01 00:00:00'),
Timestamp('2015-06-01 00:00:00'),
Timestamp('2015-07-01 00:00:00'),
Timestamp('2015-08-01 00:00:00'),
Timestamp('2015-09-01 00:00:00'),
Timestamp('2015-10-01 00:00:00'),
Timestamp('2015-11-01 00:00:00'),
Timestamp('2015-12-01 00:00:00')]
:
email user_name sessions ymo
[email protected] JD 0 2015-01-01
[email protected] JD 0 2015-02-01
[email protected] JD 1 2015-03-01
[email protected] JD 0 2015-04-01
[email protected] JD 2 2015-05-01
[email protected] JD 0 2015-06-01
[email protected] JD 0 2015-07-01
[email protected] JD 0 2015-08-01
[email protected] JD 0 2015-09-01
[email protected] JD 0 2015-10-01
[email protected] JD 0 2015-11-01
[email protected] JD 0 2015-12-01
ymo
列がpd.Timestamp
のです
残念ながら、この回答:Adding values for missing data combinations in Pandasは、既存のymo
値。
私はこのような何かを試してみましたが、それは遅い極めてです:
for em in all_emails:
existent_ymo = fill_ymo[fill_ymo['email'] == em]['ymo']
existent_ymo = set([pd.Timestamp(datetime.date(t.year, t.month, t.day)) for t in existent_ymo])
missing_ymo = list(existent_ymo - all_ymo)
multi_ind = pd.MultiIndex.from_product([[em], missing_ymo], names=col_names)
fill_ymo = sessions.set_index(col_names).reindex(multi_ind, fill_value=0).reset_index()
不足している項目が満たされ上回った場合は、pd.data_rangeで始まる新しいデータフレームを取り込みます。次に、日付が一致するセッション値を追加します。電子メールアドレスとuser_nameが1の場合は、メモリを節約するためにデータフレームに1つしか含めることはできません(サイズが問題の場合) – dodell