2017-04-27 4 views
0

2つのデータフレームを作成しました。 1つは、終値と移動平均のセットを持つ「dfmas」と呼ばれました。2つのパンダデータフレームを連結するときにNaN値を取得する理由>

  PX_OPEN PX_HIGH PX_LOW PX_LAST  ma5  ma8  ma21 
Date                   

12/19/2016 117.90 118.03 116.55 117.09 117.086 116.22625 114.231905 
12/20/2016 117.09 118.24 116.99 117.86 117.620 116.70375 114.567143 
12/21/2016 117.86 118.07 117.11 117.55 117.722 116.98250 114.872381 
12/22/2016 117.55 117.88 117.27 117.54 117.594 117.29750 115.111429 

I次いで「ma5xdf」は5日移動平均が(+1)の立ち上がりおよび立ち下がりされたときに私を示している別のパンダデータフレームを作成している(-1)又はレベル(0)。

ma5x 
0  0 
1  0 
2  0 
3  0 
4  -1 
5  -1 
6  -1 
7  -1 
8  1 
9  1 

私はその後、1に2つのデータフレームをマージしたいが、私は、立ち上がり/ 5日落下し、またオリジナルの「dfmas」データの末尾のためのNaN値の負荷を取得しています。私は使用しています。

dfx = pd.concat([dfmas, ma5xdf], axis =1) 
print(dfx.tail(4)) 

となる。

 PX_OPEN PX_HIGH PX_LOW PX_LAST ma5 ma8 ma21 ma5x 
1845  NaN  NaN  NaN  NaN NaN NaN NaN 1.0 
1846  NaN  NaN  NaN  NaN NaN NaN NaN 1.0 
1847  NaN  NaN  NaN  NaN NaN NaN NaN 1.0 
1848  NaN  NaN  NaN  NaN NaN NaN NaN 1.0 

ありがとうございました。ありがとうございます。

+1

'pd.concat'は、' index'(デフォルトは 'axis = 0')、' columns'( 'axis = 1')のどちらでもマージします。インデックス(または列)が整列していない別のオブジェクトと連結すると、外部結合が生成されます。 'dfmas'のインデックスを使って' ma5xdf'を作成する必要があります – piRSquared

+0

あなたの入力データにはどのような出力がありますか? 2つのDFは異なる数の行を有するように見える。 – Allen

+0

希望の出力は、ma5xdfをdfmasにアライメントさせることです。 5日間の移動平均がdfmasの実際の5日間のdmaとの関係でどのように上昇または下降するか私はdfmasにインデックスを付ける方法、またはdf5xdfが1行少ないように整列する方法をよく分かりません。 – Bugsy

答えて

1

最初のデータフレーム(dfmas)の最後に2番目のデータフレーム(ma5xdf)の列を追加したい場合は、これを行うことができます。

ma5xdf['ma5x'] = ma5xdf['ma5x'].astype(float) 
dfmas['ma5x'] = ma5xdf['ma5x'] 

単純で正確な解決策です。

インデックスがdfmasのdate列に設定されています。

別のアプローチです。

dfmas.reset_index(drop=True,inplace=True) 
ma5xdf['ma5x'] = ma5xdf['ma5x'].astype(float) 
dfmas['ma5x'] = ma5xdf['ma5x'] 
dfmas = dfmas.set_index('Date') 
+0

これは、最初の方法であなたに感謝します。しかし、それはインデックスとして '日付'を受け入れることはありませんか?また、dfmasの浮動小数点数は正しく入力されますが、 'ma5x'は正しく入力されません。 – Bugsy

+0

@Bugsy ma5xdf ['ma5x'] .astype(float) 'を実行してから、データフレームの列をma5xdfからdfmaxにコピーしてください。あなたの2番目のクエリは、その日付はインデックスを設定することはできませんでした、あなたはあなたの列名を教えてください、私は 'Date'は列名ではないと思います。編集を参照してください。 – Shubham

+0

素晴らしい、多くの皆さん、ありがとうございました。 – Bugsy

関連する問題