私はnumpyとpandasにかなり新しいと言って始めましょう。私はパンダのデータフレームを構築しようとしていますが、私は自分が適切なやり方で何かをやっているとは確信していません。オブジェクトのリストからパンダのデータフレームを構築する
私の設定では、.Netオブジェクトの大量のリスト(私はほとんど制御できません)があり、これからpandasデータフレームを使用して時系列を構築したいと考えています。デモ用に単純なプレースホルダクラスに.Netクラスを置き換えた例があります。コードのlistOfthings
は、基本的には.Netから取得したもので、これをpandasデータフレームに変換したいと考えています。
私の質問は以下のとおりです。
- 私が最初にnumpyの配列を構築することにより、データフレームを構築します。これは必要ですか?また、この配列のサイズは1000x2ではありません。ここでnumpyを使用するより良い方法はありますか?
- 文字列をdatetime64にキャストできないように見えるため、このコードは機能しません。文字列がISO形式であるため、これは私を混乱させ、このように解析しようとすると動作します:
np.datetime64(str(np.datetime64('now','us')))
。
コードサンプル:事前に
import numpy as np
import pandas as pd
class PlaceholderClass:
def time(self):
return str(np.datetime64('now', 'us'))
def value(self):
return 100*np.random.random_sample()
listOfThings = [PlaceholderClass() for i in range(1000)]
arr = np.array([(x.time(), x.value()) for x in listOfThings], dtype=[('time', np.datetime64), ('value', np.float)])
dataframe = pd.DataFrame(data=arr['value'], index=arr['time'])
おかげ
@PandasRocksにお返事ありがとうございます。しかし私は私の場合にあなたの答えをどのように適用できるかは分かりません。私の例では 'ListOfThings'を与えられていますが、インデックスとしてdatetimesを持つデータフレームを構築する方法をdemostrateできますか? – DoubleTrouble
@DoubleTrouble - 別の行を追加しました。私はあなたがジェネレータ構文を使うことができると思うので、Pandasはインデックスと値をその場で作成します。私が誤解されていないならば、Pandasシリーズは数が少ない配列とは区別されます。 – PandasRocks
それはとても素敵です、私を助けてくれてありがとう – DoubleTrouble