2017-06-29 20 views
2

インデックスの長さが異なる別のデータフレームのあるデータフレームのNaN値の有効期限の列を置き換えるのに少し時間が掛かる。NaN値をpandas pythonで他のデータフレームに置き換える

サンプルデータDF1:

SOH  Price  Value Expiry Comments 
0 1P  10.49  10.49  NaN  NaN 
1 220  7.55  16.61  NaN  NaN 

DF2と有効期限の列を置き換える:

SOH  Price  Value Expiry Comments 
1 1P  6.22  6.22  NaN  NaN 
2 61  17.65  10.77  NaN  NaN 
3 1P  11.99  11.99  NaN  NaN 
4 2P  54.45 108.90  NaN  NaN 
5 1P  10.49  10.49  May-17  NaN 
6 220  7.55  16.61  June-18  NaN 

をだから、新しいデータフレームは異なる順序およびインデックスを持っているかもしれませんが、列は同じまま。私はあることをDF1出力のために達成したいと思います


SOH価格の値の有効期限が1P 10.49 10.49
0コメント月-17のNaN
は 1 220 7.55 16.61 June18 NaNの

アイブ氏は試してみました:

  • df1.fillna(DF2)、
  • df1.update(DF2)
  • df1.loc [DF1 [ '期限']。ISNULL() 、 '有効期限'] = DF1 [ '期限']。マップ(df2.Expiry)
  • 前方内側
  • をマージ3つの引数、
  • とループが

まだ運に参加:(どんな助けもありがとう! ['SOH', 'Price', 'Value']

+0

あなたはSOH列に基づいて交換されていますか? – Uasthana

+0

いいえ、私は価格と値が同じであるように見える他のSOHがある場合に一致する必要があります –

答えて

1

joinその後、fillna

cols = ['SOH', 'Price', 'Value'] 
d2 = df2.set_index(cols).Expiry.dropna() 
df1.fillna(df1.drop('Expiry', 1).join(d2, on=cols)) 

    SOH Price Value Expiry Comments 
0 1P 10.49 10.49 May-17  NaN 
1 220 7.55 16.61 June-18  NaN 
+0

クイックレスポンスのおかげで、奇妙なことに感謝 "d2 = df2.set_index(cols).Expiry.dropna()"私AttributeError: 'DataFrame'オブジェクトには属性 'Expiry'がありません –

+0

あなたのカラム名は、 – piRSquared

+0

と思われるものではありません。.set_index(cols)my print(d2)は次のようになります:Empty DataFrame カラム:[] Index :[105、22.92、40.11、nan、nan、etc]、私が間違っていることを指すポインタ?あなたは 'cols = ['SOH'、 'Price'、 'Value']'を使用していますか? –

関連する問題