2017-01-25 12 views
3

私はPythonと一般的なコーディングには非常に新しいです。私は潜在的にいくつかの時間が不足している1分間隔でいくつかのデータがあります。私は欠けている時間と対応するデータポイントのNaN値を記入したいと思います。これは私がこれまでに持っていたものであり、NaNに欠けているのではなくすべてのデータポイントを埋めています。Pythonのデータポイントがありません

import pandas as pd 
df = pd.read_csv("data3.csv", index_col="DateTime") 
df = df.reindex(pd.date_range("11-1-2014 12:00:00", "11-1-2014 12:10:00", freq="1min"), fill_value="NaN") 
df.to_csv("test3.csv") 

私は私が欲しいもの

       NSERC_CB04_A0401 
2014-11-01 12:00:00    NaN 
2014-11-01 12:01:00    NaN 
2014-11-01 12:02:00    NaN 
2014-11-01 12:03:00    NaN 
2014-11-01 12:04:00    NaN 
2014-11-01 12:05:00    NaN 
2014-11-01 12:06:00    NaN 
2014-11-01 12:07:00    NaN 
2014-11-01 12:08:00    NaN 
2014-11-01 12:09:00    NaN 
2014-11-01 12:10:00    NaN 

を書いています

   NSERC_CB04_A0401 
DateTime       
11/1/2014 0:00   1.121889 
11/1/2014 0:01   1.121889 
11/1/2014 0:02   1.121889 
11/1/2014 0:03   1.121889 
11/1/2014 0:04   1.118503 
11/1/2014 0:05   1.121889 
11/1/2014 0:06   1.121889 
11/1/2014 0:07   1.121889 
11/1/2014 0:09   1.121889 
11/1/2014 0:10   1.121889 

ファイル読んでいますファイル:

    NSERC_CB04_A0401 
    DateTime       
    11/1/2014 0:00   1.121889 
    11/1/2014 0:01   1.121889 
    11/1/2014 0:02   1.121889 
    11/1/2014 0:03   1.121889 
    11/1/2014 0:04   1.118503 
    11/1/2014 0:05   1.121889 
    11/1/2014 0:06   1.121889 
    11/1/2014 0:07   1.121889 
2014-11-01 12:08:00    NaN 
    11/1/2014 0:09   1.121889 
    11/1/2014 0:10   1.121889 

答えて

4

あなたは新しいコーディングとPythonで問題はありません!あなたが最初のDatetimIndexに変換indexためread_csvにパラメータparse_dates=Trueを追加し、reindex必要

から11-1-2014 12:00:00から開始時間が一致し、同様の終了時間のために11-1-2014 00:00:00に変更されます。

また、文字列NaNには値がありません。np.nanは、欠損データのデフォルト値はreindexです。

df = pd.read_csv("data3.csv", index_col="DateTime", parse_dates=True) 

df = df.reindex(pd.date_range("11-1-2014 00:00:00", "11-1-2014 00:10:00", freq="1min")) 
print (df) 
        NSERC_CB04_A0401 
2014-11-01 00:00:00   1.121889 
2014-11-01 00:01:00   1.121889 
2014-11-01 00:02:00   1.121889 
2014-11-01 00:03:00   1.121889 
2014-11-01 00:04:00   1.118503 
2014-11-01 00:05:00   1.121889 
2014-11-01 00:06:00   1.121889 
2014-11-01 00:07:00   1.121889 
2014-11-01 00:08:00    NaN 
2014-11-01 00:09:00   1.121889 
2014-11-01 00:10:00   1.121889 

もっと一般的な解決策がminによってreindexmaxdatetimeですが、それはあなたのデータに依存:

df = df.reindex(pd.date_range(df.index.min(), df.index.max(), freq="1min")) 
print (df) 
        NSERC_CB04_A0401 
2014-11-01 00:00:00   1.121889 
2014-11-01 00:01:00   1.121889 
2014-11-01 00:02:00   1.121889 
2014-11-01 00:03:00   1.121889 
2014-11-01 00:04:00   1.118503 
2014-11-01 00:05:00   1.121889 
2014-11-01 00:06:00   1.121889 
2014-11-01 00:07:00   1.121889 
2014-11-01 00:08:00    NaN 
2014-11-01 00:09:00   1.121889 
2014-11-01 00:10:00   1.121889 

指数溶液中の重複がsummeanのようないくつかの集計関数とresampleある場合 - また、SE resample docs

print (df) 
        NSERC_CB04_A0401 
DateTime        
2014-11-01 00:00:00   1.121889 
2014-11-01 00:01:00   1.121889 
2014-11-01 00:02:00   1.121889 
2014-11-01 00:03:00   1.121889 
2014-11-01 00:04:00   1.118503 
2014-11-01 00:05:00   1.121889 
2014-11-01 00:06:00   1.121889 
2014-11-01 00:07:00   1.121889 <- duplicates index 
2014-11-01 00:07:00   1.121889 <- duplicates index 
2014-11-01 00:09:00   1.121889 
2014-11-01 00:10:00   1.121889 

df = df.resample('1min').mean() 
print (df) 
        NSERC_CB04_A0401 
DateTime        
2014-11-01 00:00:00   1.121889 
2014-11-01 00:01:00   1.121889 
2014-11-01 00:02:00   1.121889 
2014-11-01 00:03:00   1.121889 
2014-11-01 00:04:00   1.118503 
2014-11-01 00:05:00   1.121889 
2014-11-01 00:06:00   1.121889 
2014-11-01 00:07:00   1.121889 
2014-11-01 00:08:00    NaN 
2014-11-01 00:09:00   1.121889 
2014-11-01 00:10:00   1.121889 
+0

私は2つの列がある場合s。 12列のコードで試してみると "ValueError:重複軸から再インデックスできない"というエラーが表示される – acb

+0

編集した回答を確認してください。 – jezrael

+0

もう一度本当にありがとう、ありがとう。最後の質問の1つnap.nanを使用して欠落しているデータ行にNaN値を与える方法を教えてください。今はNaNの代わりに空の行を取得しています。 – acb

関連する問題