パンダの時系列に変換した日付を含むパンダのデータフレームがあります。
そこから、頻度を月に設定した期間形式で、日付列と同じ列をDFに追加したいと思いました。
問題は、データフレーム内で、期間列が数値として印刷されることです(2009-1は468として印刷され、2009-2は469として印刷されます)。
DFの外部に別のPeriodIndexオブジェクトを作成する場合、これは問題ではありません。
私は何が間違っているのですか?
フォーマットされていない時間列をDateTimeに変換するために使用したコード:
subset['Created On'] = pd.to_datetime(subset['Created On'])
ピリオドを含む列を作成するためのコード:
subset['Month'] = pd.PeriodIndex(subset['Created On'],freq='M')
別のPeriodIndexオブジェクトを作成し、月の形式で日付を適切に表示するコード:
months = pd.PeriodIndex(subset['Created On'],freq='M')
編集:
コメントで要求されているように、subset [:1] .to_dict()は以下を出力します。
#[Out]# {'Created On': {12822544: <Timestamp: 2009-01-01 00:00:00>}, 'City': {12822544: 'BROOKLYN'}, 'Borough': {12822544: 'Unspecified'}, 'Location': {12822544: '(40.65662129596871, -73.95806621423951)'}, 'Closed Date': {12822544: '01/07/2009 12:00 AM'}}
OP以降、セッションが失われ、データをDFに再アップロードする必要があったことに注意してください。この時点では、pd.to_datetimeメソッドを使用して、列「CreatedOn」をタイムスタンプに変換しただけです。それ以来、私は以下を使用してみました:
subset['Created On'].resample('M')
エラーが発生します:
TypeError: Only valid with DatetimIndex or PeriodIndex
おそらく問題の一部は、日付列をDFインデックスとして使用していないことですか?もしそうなら、それはたくさんの非一意の値を含み、私はすでにインデックスをより代表する一意のIDフィールドを使用しているので、それはうまくいきません。