web-dev-qa-db-ja.com

新しい列がpandas DataFrameに追加されたときのNaN値

別のpandas DataFrameの値と等しいpandas DataFrameに新しい列を生成しようとしています。新しい列を作成しようとすると、新しい列値のNaN。

まず、API呼び出しを使用していくつかのデータを取得します。「mydata」DataFrameは、日付で索引付けされたデータの1列です

mydata = Quandl.get(["YAHOO/INDEX_MXX.4"],
                    trim_start="2001-04-01", trim_end="2014-03-31",
                    collapse="monthly")

次のコードでCSVから取得する次のDataFrameには、「mydata」と同じ行数のデータの列が多数含まれています

DWDATA = pandas.DataFrame.from_csv("filename",
                                   header=0,
                                   sep=',',
                                   index_col=0,
                                   parse_dates=True,
                                   infer_datetime_format=True)

次に、次のように新しい列を生成しようとします。

DWDATA['MXX'] = mydata.iloc[:,0]

繰り返しますが、私はNaN値を取得します。誰かがなぜこれを行っているのか、そしてどのように解決するのかを理解するのを手伝ってくれる?私が読んだことから、それは私のインデックスに何か問題があるかもしれないようです。インデックスは各DataFrameの日付ですが、「mydata」には月末の日付があり、「DWDATA」には月初の日付があります。

16
gtnbz2nyt

インデックスが完全に等しくないため、NaNが発生します。どちらか一方または両方のインデックスを一致させるために変更する必要があります。例:

mydata = mydata.set_index(DWDATA.index)

上記は 'mydata'データフレームのインデックスを 'DWDATA'データフレームのインデックスと一致するように変更します。

行の数は2つのデータフレームで正確に等しいため、「mydata」の値を新しい「DWDATA」列に渡すこともできます。

DWDATA['MXX'] = mydata.iloc[:,0].values
26
gtnbz2nyt