私はこの形式で csv を読み込もうとしています:
2014,92,1931,6.234,10.14
2014,92,1932,5.823,9.49
2014,92,1933,5.33,7.65
2014,92,1934,4.751,6.19
2014,92,1935,4.156,5.285
2014,92,1936,3.962,4.652
2014,92,1937,3.74,4.314
2014,92,1938,3.325,3.98
2014,92,1939,2.909,3.847
2014,92,1940,2.878,3.164
明確にするために、これは (年、年間通算日、24:00 時間、および 2 列の値) です。
以前の質問でこの問題についていくつか考えましたが、役に立たず、いくつかの問題があることが証明されています... ( pandas を使用して 3 列の日付/時刻情報からインデックス付きの datetime を作成します)
上記の質問で述べたように、次の「read_csv」試行
df = pd.read_csv("home_prepped.dat", parse_dates={"dt" : [0,1,2]},
date_parser=parser, header=None)
TypeError をトリガーします。
TypeError: parser() takes exactly 1 argument (3 given)
これは、「parse_dates」引数に 0,1,2 が含まれているためです。また、それらを二重括弧 [[0,1,2]] に入れてみましたが、次のようになりました。
ValueError: [0, 1, 2] is not in list
parse_dates=True を設定することでこれを乗り越えましたが、後で set_index を設定できると思っていましたが、次のようになりました。
TypeError: numpy.int64 ではなく、文字列でなければなりません
私のパーサーもフォーマットに引っかかってしまい、「年間通算日」の値をゼロで埋めるという相反する話を読んだことがあります。私のものはゼロで埋められていませんが、それでも、上記のエラーはさておき、最初の値である年でフォーマットがハングアップしました! パーサーは次のとおりです。
def parser(x):
return pd.datetime.strptime(x, '%Y %j %H%M')
そうです、「2014」が認識されず、「92」(年の日)が認識されないというエラーが発生しましたが、少なくとも strptime がフォーマットを試すために「通り抜ける」ことができたので、奨励されました。
これが私のデータと関係があるかどうか疑問に思っています。
この日時情報を日時としてインデックス化する方法を探していますが、問題はありませんでした。パディングの問題であるフォーマットを誰かがテストしたい場合に備えて、いくつかのジュリアンをパディングしました。以下を参照してください。
2014,092,1931,6.234,10.14
2014,092,1932,5.823,9.49
2014,092,1933,5.33,7.65
2014,092,1934,4.751,6.19
2014,092,1935,4.156,5.285
2014,092,1936,3.962,4.652
2014,092,1937,3.74,4.314
2014,092,1938,3.325,3.98
2014,092,1939,2.909,3.847
2014,092,1940,2.878,3.164
助けてくれてありがとう、私はここで本当にイライラし始めています:S