私のスクリプトの速度を向上させて、次の答えを見ました:Iterrows Performance Issues。ここでは、iterrowsを使用することはめったにないという答えです。iterrowsの代わりにベクトル化
私のコードでは、非常に簡単で直感的ですが非常に遅いので、私はiterrowsを利用しています。だから私はiterrowsを使用するコードの部分をベクトル化したいと思います。ここでは2つの例があります。私は解決策を見つけることができません。両方の例では列の値は、次の形式を持つすべてのdatetime値です:%Y-%m-%d %H:%M:%S
for index, row in df.iterrows():
df.loc[index, 'Time_Between']= row['Time_Begin'] + timedelta(seconds=row['Some_Integer_Seconds_In_A_Column'])
df.loc[index, 'Time_Required']= row['Time_End'] - timedelta(seconds=SomeIntegerSecondsAsAVariable)
df.loc[index, 'Tota_Time']= ((row['Time_Begin'] - row['Time_First']).total_seconds())/60
for index, row in df.iterrows():
if row['Time_Required'] > row['Time_Between']:
df.loc[index, 'Check']= 0
else:
df.loc[index, 'Check']= 1
は、どのように私はこれをベクトル化することができますか?私はマスキングを適用しようとしたが、何も動かない。ほとんどの時間は、私が手:私はiterrowsを取得いけないTypeError: Cannot change data-type for object array.
何か...第二セットの場合
多くの感謝!私はあなたがこの方法でnp.whereとpd.timedeltaを使用できるかどうかはわかりませんでした。これは私に10分の実行時間をもう一度節約する:) – Uis234