質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

8728閲覧

[python]pandas.seriesでindexのデータ型が変更できない件

mi_tyan

総合スコア13

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

1クリップ

投稿2017/12/19 01:13

###打ち込んだコード

kara_series = pd.Series([]) for p in arange(0,384): exec("a = manual_data_mod["+str(p)+"]") exec("f = after_areas[:," +str(p)+ "][a:-1]") obj = Series(f) ss = obj.value_counts() kara_series.add(ss, fill_value=0)

###エラー文

/usr/local/bin/ipython:1: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future #!/usr/bin/python

seriesで作成したデータのindexがfloatであるため上記のエラーが出てしまうと考えられます、indexのデータ型を変える方法を探しているのですが見つからず困っております。

お手数ですがご回答のほどよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

1

ベストアンサー

単純にIndexを振りなおすなら Series.reset_index()

Python

1 2import pandas as pd 3ser = pd.Series([1.,2.,3.], index=[1.,2.,3.]) 4 5ser = ser.reset_index(drop=True) 6print(ser) 7# 0 1.0 8# 1 2.0 9# 2 3.0 10# dtype: float64

Indexの型を変更したい場合はSeries.index.astype()
で良いのではないでしょうか

Python

1import pandas as pd 2 3ser = pd.Series([1.,2.,3.], index=[1.,2.,3.]) 4print(ser) 5# 1.0 1.0 6# 2.0 2.0 7# 3.0 3.0 8# dtype: float64 9 10# indexの型を確認 11print(ser.index.dtype) 12# float64 13 14# indexをint型に変更 15ser.index = ser.index.astype(int) 16 17# print(ser) 18# 1 1.0 19# 2 2.0 20# 3 3.0 21# dtype: float64 22 23# indexの型を再度確認 24print(ser.index.dtype) 25# int64

【補足】

コメントを見る限り、manual_data_mod と after_areas は共に、内部のデータはfloat型のになっているようです。
特に、manual_data_modはIndex値として使用しますので、 Int型に変換することで動作するのではないでしょうか。
after_areasも特に少数を扱わないのであれば変換しておいたほうがよいと思います。)

Python

1manual_data_mod = manual_data_mod.astype(int) 2 3kara_series = pd.Series([]) 4for p in np.arange(0,384): 5 a = manual_data_mod[p] 6 f = after_areas[:,p][a:-1] 7 obj = pd.Series(f) 8 ss = obj.value_counts() 9 kara_series = kara_series.add(ss, fill_value=0)

あと気になった点を3点ほど。

(1)

Python

1 f = after_areas[:,p][a:-1]

Python

1 f = after_areas[a:-1,p]

で問題ないのではないでしょうか。

(2)

Python

1 f = after_areas[:,p][a:-1]

a:-1 の範囲でSliceとすると 一番最後の値が含まれませんが問題ないのでしょうか?(仕様かもしれませんが)

Python

1 f = after_areas[:,p][a:]

とするべきではないのでしょうか。
(3)

Python

1kara_series.add(ss, fill_value=0)

Python

1kara_series = kara_series.add(ss, fill_value=0)

の間違いかと思います。

投稿2017/12/19 01:58

編集2017/12/19 07:16
magichan

総合スコア15898

mi_tyan👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_tyan

2017/12/19 02:15 編集

回答ありがとうございます。 上記の通りコードを以下に書き換えました ss.index = ss.index.astype(int) kara_series.index = kara_series.index.astype(int) 補足 In [723]: ss.index Out[723]: Int64Index([0], dtype='int64') In [724]: kara_series.index Out[724]: Int64Index([1], dtype='int64') しかし以前と変わらず同様の結果になってしまいます、、、
magichan

2017/12/19 02:45

残念ながら、挙げていただいたコードだけでエラーを特定するのは困難です。 できましたら、 - manual_data_mod がどのような型でどんなデータが入っているのか - after_areas がどのような型でどんなデータが入っているのか - 何故、exec() を使用しているのか 等の説明をいただけたらと思います。
magichan

2017/12/19 02:50

'a' の値が float値なのではないかという気もしております。
mi_tyan

2017/12/19 05:53 編集

情報が足らずに申し訳ありません。 In [44]: type(manual_data_mod) Out[44]: numpy.ndarray In [42]: manual_data_mod Out[42]: array([ 215., 197., 191., 173., 170., 161., 186., 203., 189., 224., 170., 183., 176., 151., 218., 173., 223., 211., 188., 170., 166., 179., 218., 194., 179., 178., 189.,]) (一部抜粋) In [47]: type(after_areas) Out[47]: numpy.ndarray In [45]: after_areas Out[45]: array([[ 0., 15., 11., ..., 7., 15., 27.], [ 15., 16., 10., ..., 19., 4., 18.], [ 24., 4., 26., ..., 13., 5., 11.],]) (一部抜粋) execは使う必要なかったです。 ご指摘ありがとうございます。 また a = int(a)としint型にしました。
magichan

2017/12/19 07:16

とりあえず補足を追加しました
mi_tyan

2017/12/19 07:20

丁寧にありがとうございます!! おかげさまで解決しました!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問