前提・実現したいこと
複数のdataframeをpanelを用いて整理したのですが、panelに整理した際に「型」が変わってしまいます。
dataframeでは列ごとにfloat64とint64の違うdataframeなのですが、panelに移した際、全てfloat64に変わってしまいます。
「型」直す方法、もしくは「型」を変えずにpanelに移す方法を教えてください。
プログラミングを学び始めて半年なので言葉がおかしいと思いますがご了承ください。
発生している問題・エラーメッセージ
エラーはなし
該当のソースコード
sample_frame2012=pd.read_csv("sapporo_2012_select.csv", encoding="shift-jis") sample_frame2013=pd.read_csv("sapporo_2013_select.csv", encoding="shift-jis") sample_frame2014=pd.read_csv("sapporo_2014_select.csv", encoding="shift-jis") sample_frame2015=pd.read_csv("sapporo_2015_select.csv", encoding="shift-jis") sample_frame2016=pd.read_csv("sapporo_2016_select.csv", encoding="shift-jis") sample_frame2017=pd.read_csv("sapporo_2017_select.csv", encoding="shift-jis") Panel_frame = pd.Panel({'2012':sample_frame2012,'2013':sample_frame2013,'2014':sample_frame2014,'2015':sample_frame2015,'2016':sample_frame2016,'2017':sample_frame2017}) print(sample_frame2012.dtypes) #元データ print(Panel_frame.ix[0].dtypes) 表示結果 年 int64 月 int64 日 int64 時 int64 分 int64 平均風速(10分移動平均) float64 気温 float64 現地気圧 float64 dtype: object 年 float64 月 float64 日 float64 時 float64 分 float64 平均風速(10分移動平均) float64 気温 float64 現地気圧 float64 dtype: object
試したこと
astypeで特定列だけint型に変更しようとしたのですが、うまくいきません。
Panel_frame.ix[0]['年']=Panel_frame.ix[0]['年'].astype(np.int64)
Panel_frame.ix[0]['月']=Panel_frame.ix[0]['月'].astype(np.int64)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
2012以外のDataFrameも2012と全く同じ型ですか?
はい、型は一緒です。
学校から帰宅した為、証拠は挙げられませんが、確認しました。
ただ、異なる点があるとするなら潤年は行数が1日分(1440行)多いくらいです。
float64は型推論の結果だと思うのですが。
sample_frame2012だけ(同じ元データのDataFrame)でPanelを作成したら、どうなりますか?
まだ試していなかったので、
明日試してみます!
学校のPCにデータが入っているため、昼頃の返信になると思います。
すみません。
あと、astypeでfloat64→int64にしようとして、変わらなかったのですが、そちらの方も助言をお願い致します。
「astypeで特定列だけint型に変更しようとしたのですが、うまくいきません。」とは何がどうなったのでしょうか?(エラーが出たのか? 何も起こらなかったのか? など)
あと、質問の際にはOSの種類、Pythonのバージョン、モジュールのバージョン等記入すると、適切な回答がつきやすくなるかと思います。
アドバイスありがとうございます。
OSはwindows10 、python3、pandasはver0.22.0 です。
astypeで特定列だけint型に変更しようとしたのですが、何も起こりませんでした。
以下ソースコードと実行結果です。
Panel_frame.ix[0]['年']=Panel_frame.ix[0]['年'].astype(np.int64)
Panel_frame.ix[0]['月']=Panel_frame.ix[0]['月'].astype(np.int64)
Panel_frame.ix[0]['日']=Panel_frame.ix[0]['日'].astype(np.int64)
Panel_frame.ix[0]['時']=Panel_frame.ix[0]['時'].astype(np.int64)
Panel_frame.ix[0]['分']=Panel_frame.ix[0]['分'].astype(np.int64)
print(Panel_frame.ix[0].dtypes)
年 float64
月 float64
日 float64
時 float64
分 float64
平均風速(10分移動平均) float64
気温 float64
現地気圧 float64
また、sample_frame2012だけ(同じ元データのDataFrame)でPanelを作成してみたのですが、すべての列の型float64になってしまいました。
sample_frame2012=pd.read_csv("sapporo_2012_select.csv", encoding="shift-jis")
Panel_frame = pd.Panel({'2012':sample_frame2012})
print(Panel_frame.ix[0].dtypes)
年 float64
月 float64
日 float64
時 float64
分 float64
平均風速(10分移動平均) float64
気温 float64
現地気圧 float64
meg_と言う方は私に叩かれてから方針変えたようですね
良い事です
前はURL貼るだけの使えないアホでしたから()
回答1件
あなたの回答
tips
プレビュー