🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

Q&A

解決済

1回答

625閲覧

Pythonにおける,PandasのDataFrameでのインデックスの変更について<datetime型>

tty007

総合スコア9

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

DateTime

多くのプログラミング言語におけるDateTimeオブジェクトは、日付と時間に関する演算と出力を行います。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

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

0グッド

0クリップ

投稿2019/11/09 05:57

前提

Pythonのデータ整形について不明な点があるので, 詳しい方にお伺いしたいです.

現在,このようなデータセットがあります

user nice system idle iowait irq softirq steal time 1900-01-01 15:59:36.600 NaN NaN NaN NaN NaN NaN NaN NaN 1900-01-01 15:59:36.700 14.666667 0.0 17.000000 40.666667 0.000000 1.333333 0.333333 0.0 1900-01-01 15:59:36.800 17.833333 0.0 18.500000 35.833333 0.000000 0.666667 0.666667 0.0 1900-01-01 15:59:36.900 13.000000 0.0 16.500000 28.500000 0.000000 1.500000 0.000000 0.0 1900-01-01 15:59:37.000 16.833333 0.0 19.666667 42.333333 0.000000 1.166667 0.000000 0.0 ... ... ... ... ... ... ... ... ... 1900-01-01 15:59:44.100 16.000000 0.0 18.000000 45.500000 0.666667 1.666667 0.000000 0.0 1900-01-01 15:59:44.200 16.666667 0.0 18.666667 39.833333 0.000000 1.333333 1.000000 0.0 1900-01-01 15:59:44.300 17.333333 0.0 18.333333 43.666667 0.000000 0.666667 0.000000 0.0 1900-01-01 15:59:44.400 16.000000 0.0 16.666667 36.000000 0.000000 0.666667 0.333333 0.0 1900-01-01 15:59:44.500 10.000000 0.0 15.333333 36.000000 0.000000 1.333333 0.666667 0.0

最も右側のカラムがset_indexによりインデックスになっており,型は<class 'numpy.datetime64'>です.

実現したいこと

これを差分を取って,100 milliseconds単位に経過時間として再代入したいです.(要は上から0, 0.1, 0.2, 0.3...(s))となるようにインデックスの値を割り振りたいということです.)

インデックスの値をrenameメソッドでどうやら変更できるようですが,今回のように型が<class 'numpy.datetime64'>の場合,どのようにしてプログラムを書けば調べてもわかりませんでした.
文字列であれば簡単に変更できるのですが,この解決策を知っている方いましたら教えていただけると助かります...代入の部分を特に知りたいです.差分を計算する部分についてはtimedelta64を用いて実証済みです.

どうぞよろしくお願いいたします.

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じでしょうか

Python

1import pandas as pd 2import numpy as np 3import io 4 5input_data = """ 6time,user,nice,system,idle,iowait,irq,softirq,steal 71900-01-01 15:59:36.600,,,,,,,, 81900-01-01 15:59:36.700,14.666667,0.0,17.000000,40.666667,0.000000,1.333333,0.333333,0.0 91900-01-01 15:59:36.800,17.833333,0.0,18.500000,35.833333,0.000000,0.666667,0.666667,0.0 101900-01-01 15:59:36.900,13.000000,0.0,16.500000,28.500000,0.000000,1.500000,0.000000,0.0 111900-01-01 15:59:37.000,16.833333,0.0,19.666667,42.333333,0.000000,1.166667,0.000000,0.0 121900-01-01 15:59:44.100,16.000000,0.0,18.000000,45.500000,0.666667,1.666667,0.000000,0.0 131900-01-01 15:59:44.200,16.666667,0.0,18.666667,39.833333,0.000000,1.333333,1.000000,0.0 141900-01-01 15:59:44.300,17.333333,0.0,18.333333,43.666667,0.000000,0.666667,0.000000,0.0 151900-01-01 15:59:44.400,16.000000,0.0,16.666667,36.000000,0.000000,0.666667,0.333333,0.0 161900-01-01 15:59:44.500,10.000000,0.0,15.333333,36.000000,0.000000,1.333333,0.666667,0.0 17""" 18df = pd.read_csv(io.StringIO(input_data)) 19df['time'] = df['time'].apply(np.datetime64) 20df = df.set_index('time') 21 22print(df) 23""" 24 user nice system idle iowait irq softirq steal 25time 261900-01-01 15:59:36.600 NaN NaN NaN NaN NaN NaN NaN NaN 271900-01-01 15:59:36.700 14.666667 0.0 17.000000 40.666667 0.000000 1.333333 0.333333 0.0 281900-01-01 15:59:36.800 17.833333 0.0 18.500000 35.833333 0.000000 0.666667 0.666667 0.0 291900-01-01 15:59:36.900 13.000000 0.0 16.500000 28.500000 0.000000 1.500000 0.000000 0.0 301900-01-01 15:59:37.000 16.833333 0.0 19.666667 42.333333 0.000000 1.166667 0.000000 0.0 311900-01-01 15:59:44.100 16.000000 0.0 18.000000 45.500000 0.666667 1.666667 0.000000 0.0 321900-01-01 15:59:44.200 16.666667 0.0 18.666667 39.833333 0.000000 1.333333 1.000000 0.0 331900-01-01 15:59:44.300 17.333333 0.0 18.333333 43.666667 0.000000 0.666667 0.000000 0.0 341900-01-01 15:59:44.400 16.000000 0.0 16.666667 36.000000 0.000000 0.666667 0.333333 0.0 351900-01-01 15:59:44.500 10.000000 0.0 15.333333 36.000000 0.000000 1.333333 0.666667 0.0 36""" 37 38print(type(df.index[0])) 39""" 40<class 'pandas._libs.tslibs.timestamps.Timestamp'> 41""" 42 43df.index = (df.index - df.index[0]).astype('uint64') / 1e9 44print(df) 45""" 46 user nice system idle iowait irq softirq steal 47time 480.0 NaN NaN NaN NaN NaN NaN NaN NaN 490.1 14.666667 0.0 17.000000 40.666667 0.000000 1.333333 0.333333 0.0 500.2 17.833333 0.0 18.500000 35.833333 0.000000 0.666667 0.666667 0.0 510.3 13.000000 0.0 16.500000 28.500000 0.000000 1.500000 0.000000 0.0 520.4 16.833333 0.0 19.666667 42.333333 0.000000 1.166667 0.000000 0.0 537.5 16.000000 0.0 18.000000 45.500000 0.666667 1.666667 0.000000 0.0 547.6 16.666667 0.0 18.666667 39.833333 0.000000 1.333333 1.000000 0.0 557.7 17.333333 0.0 18.333333 43.666667 0.000000 0.666667 0.000000 0.0 567.8 16.000000 0.0 16.666667 36.000000 0.000000 0.666667 0.333333 0.0 577.9 10.000000 0.0 15.333333 36.000000 0.000000 1.333333 0.666667 0.0 58"""

投稿2019/11/09 07:37

nomuken

総合スコア1627

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

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

tty007

2019/11/11 03:22

print(type(df.index[0])) の部分で,型がstrになってしまいます...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問