形状が〜(100000, 50)
のpandasデータフレームを使用していますが、目的のデータフォーマットと操作を実現できますが、コードの実行に時間がかかります(3〜10分)含む、特定のタスクに応じて:値は、別のリストまたはnumpyの配列内に含まれるかどうかの確認データフレーム系列 パンダのデータを操作するためのForループの高速化
- 組み合わせるストリング
私は将来大きなデータフレームを持ち、非常に長い処理時間を避けるために適切なコーディング方法を使用したいと考えています。私は私のfor
ループが最も長くかかることがわかります。リスト内包表記とシリーズ演算子(たとえばdf.loc[:,'C'] = df.A + df.B
)を持つfor
ループを回避しようとしますが、場合によってはネストされたfor
ループでより複雑で複雑な操作を実行する必要があります。例えば、各list
内の各アイテムを以下のデータフレームのシリーズhistory
(一連のリスト)を反復処理し、続いて反復する:
for row in DF.iterrows():
removelist = []
for i in xrange(0, len(row[1]['history'])-1):
if ((row[1]['history'][i]['title'] == row[1]['history'][i+1]['title']) &
(row[1]['history'][i]['dept'] == row[1]['history'][i+1]['dept']) &
(row[1]['history'][i]['office'] == row[1]['history'][i+1]['office']) &
(row[1]['history'][i]['employment'] == row[1]['history'][i+1]['employment'])):
removelist.append(i)
newlist = [v for i, v in enumerate(row[1]['history']) if i not in removelist]
私はそのリストの内包は、ネストされたfor
ループを収容することができます知っているが、上記のように思われますリストの理解の中では本当に面倒です。
私の質問:処理時間が短いfor
ループと同じ機能を実現するために他にどのようなテクニックを使用できますか?リストを含むシリーズを反復処理するとき、ネストされたfor
ループ以外の別のテクニックを使用する必要がありますか?
は必ずしも重複を除去しないデータフレームをフィルタリングするためにその。リスト項目を含むデータフレームシリーズを素早く反復するためのコメントはありますか?以前のコメントありがとう。 – NickBraunagel
行のフレームが必要で、各行に各列のリストが含まれていますか?私は代わりにパンダのデータ構造でこれを行う方法を示すために私の答えを修正しました。 – danio
これはすばらしいです、答えのおかげで – NickBraunagel