2017-04-24 18 views
1

のために埋める前方使って、すべてのIDの毎日のデータを追加します。このデータフレームのためには、私は以下のように見えるパンダのデータフレーム持って行方不明日付

id date value name 
0 C1 2017-01-01 31 Company 1 
1 C1 2017-01-02 35 Company 1 
2 C1 2017-01-03 32 Company 1 
3 C1 2017-01-06 36 Company 1 
4 C1 2017-01-07 35 Company 1 
5 C1 2017-01-08 34 Company 1 
6 C1 2017-01-10 33 Company 1 
7 C2 2017-01-01 225 Company 2 
8 C2 2017-01-02 223 Company 2 
9 C2 2017-01-03 223 Company 2 
10 C2 2017-01-06 220 Company 2 
11 C2 2017-01-07 222 Company 2 
12 C2 2017-01-08 225 Company 2 
13 C2 2017-01-10 224 Company 2 
14 C3 2017-01-08 340 Company 3 

を、日付の範囲は、start_dateの2017年1月1日ですおよび両方を含むend_date 2017-01-10。つまり、これらの2つの日付の間にすべてのデータがあります。

欠落している日付の新しい行を追加したいとします。 ID のインスタンスC1ため、2017-01-04,2017-01-05,2017-01-09ため列の欠損値が存在し、新しい行はと以下のように添加されるべきですの列。 C2ための同様

C1 2017-01-04 0 Company1 
C1 2017-01-05 0 Company1 
C1 2017-01-09 0 Company1 

2017-01-04,2017-01-05,2017-01-09およびC3ため列の欠落値があるありますの欠損値2017-01-01から2017-01-07および2017-01-09,2017-01-10

これらの行を追加する操作をどのように実行するかはわかりませんパンダ。だから、ちょうど助けを探しています。

+0

各IDで* name *列は常に同じですか?たとえば、C1 *会社1 *、C2 *会社2 *の場合は? – Psidom

+0

はい。それは正しいです。 –

+0

以下のように答えました。それが役に立てば幸い。 – Psidom

答えて

3

1つのオプションは、あなたがpandas.date_rangeを使用して完了したいすべての日付を作成することで、その後、あなたは、最終的に欠損値を埋める外側が日付列をキーと各サブデータフレームとの完全な日付の間の接合を行うことができます0:

# create complete dates 
dates = pd.DataFrame({"date": pd.date_range("2017-01-01", "2017-01-10")}) 

# convert date column to date time if it's not already 
df['date'] = pd.to_datetime(df.date) 

# merge complete dates with each sub data frame separately using groupby.apply 
(df.groupby(['id', 'name'])['date', 'value'] 
.apply(lambda g: g.merge(dates, how="outer")) 
.fillna(0) 
.reset_index(level=[0,1]) 
.reset_index(drop=True)) 

# id  name  date value 
#0 C1 Company 1 2017-01-01 31.0 
#1 C1 Company 1 2017-01-02 35.0 
#2 C1 Company 1 2017-01-03 32.0 
#3 C1 Company 1 2017-01-06 36.0 
#4 C1 Company 1 2017-01-07 35.0 
#5 C1 Company 1 2017-01-08 34.0 
#6 C1 Company 1 2017-01-10 33.0 
#7 C1 Company 1 2017-01-04 0.0 
#8 C1 Company 1 2017-01-05 0.0 
#9 C1 Company 1 2017-01-09 0.0 
# ... 
関連する問題