2017-09-01 2 views
0

私のアカウントをループしながら、データを結合したり結合したりしようとしています。pandasループ中にデータフレームにデータをマージ/結合する

まず、私はすべての月でインデックス化空のデータフレームの設定:データフレームに値を追加するには、すべてのアカウント

Empty DataFrame 
Columns: [] 
Index: [2014-09-30, 2014-09-30, 2014-10-31, 2014-10-31, 2014-11-30, 2014-11-30, 2014-12-31, 2015-01-31, 2015-02-28, 2015-03-31] 

次のIループトラフを。

for a in accts: 

     cf = Cashflow.objects.all().filter (id = a.id).order_by ('month').values ('month', 'value') 

     df2 = read_frame (cf) 
     df2 = df2.set_index ('month') 

     df = pd.merge (df2, how = 'left', left_index = True, right_index = True) 

しかし、私は私の出力で重複データを取得しています:

month       
2014-09-30 535400 122928.0 
2014-09-30 535400 122928.0 
2014-10-31 530719 107389.0 
2014-10-31 530719 107389.0 
2014-11-30 512009 97654.0 
2014-11-30 512009 97654.0 
2014-12-31 482277  0.0 
2015-01-31 474815  0.0 

私は別の解決策を試してみました。

重複する行は削除できますが、それは不正なコードのパッチに過ぎません。

これが最適な方法ですか?それは結合であってマージではないでしょうか?

答えて

1

開始した空のデータベースに対して作成したインデックスに、重複した日付があります。どうして?

+0

私は重複した日付は見ませんでした。 Ah ... – diogenes

+0

.distinct()が問題を解決しました。ありがとう! – diogenes

1

インデックスに重複があります。

あなたはそれらを落とすことができます。df.drop_duplicates()

関連する問題