リストを使用せずに、パンダデータフレームの行を順序付けられたdictに取得する高速な方法を探しています。リストは問題ありませんが、データセットが大きい場合は時間がかかります。私はfionaGISリーダーを使用しており、行はデータ型を指定するスキーマを持つordereddictsです。私はパンダを使ってデータを結合しています。私は多くの場合、行の型が異なるので、文字列型でnumpy配列に変換することでうまくいくかもしれないと考えていました。
残念ながら、単に適用することはできません(DataFrameにフィットするため)。
In [1]: df = pd.DataFrame([[1, 2], [3, 4]], columns=['a', 'b'])
In [2]: df
Out[2]:
a b
0 1 2
1 3 4
In [3]: from collections import OrderedDict
In [4]: df.apply(OrderedDict)
Out[4]:
a b
0 1 2
1 3 4
しかし、あなたはiterrowsでリスト内包を使用することができます:
In [5]: [OrderedDict(row) for i, row in df.iterrows()]
Out[5]: [OrderedDict([('a', 1), ('b', 2)]), OrderedDict([('a', 3), ('b', 4)])]
リストではなくジェネレーターを使用できる場合は、通常、これを使用する方が効率的です。
In [6]: (OrderedDict(row) for i, row in df.iterrows())
Out[6]: <generator object <genexpr> at 0x10466da50>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加