私はこのようなDataFrameを持っています: そして、このDataFrameはdf_NoMissing_IDV
と呼ばれています。python - python pandasの2つの列間の日時計算
NoDemande NoUsager Sens IdVehiculeUtilise Fait HeureArriveeSurSite HeureEffective Periods
42196000013 000001 + 287Véh 1 11/07/2015 08:02:07 11/07/2015 08:02:13 Matin
42196000013 000001 - 287Véh 1 11/07/2015 08:17:09 11/07/2015 08:17:13 Matin
42196000002 000314 + 263Véh 1 11/07/2015 09:37:43 11/07/2015 09:53:37 Matin
42196000016 002372 + 287Véh 1 11/07/2015 09:46:42 11/07/2015 10:01:39 Matin
42196000015 000466 + 287Véh 1 11/07/2015 09:46:42 11/07/2015 10:01:39 Matin
42196000002 000314 - 263Véh 1 11/07/2015 10:25:17 11/07/2015 10:38:11 Matin
42196000015 000466 - 287Véh 1 11/07/2015 10:48:51 11/07/2015 10:51:30 Matin
42196000016 002372 - 287Véh 1 11/07/2015 11:40:56 11/07/2015 11:41:01 Matin
42196000004 002641 + 263Véh 1 11/07/2015 13:39:29 11/07/2015 13:52:50 Soir
42196000004 002641 - 263Véh 1 11/07/2015 13:59:56 11/07/2015 14:07:41 Soir
私は、列HeureArriveeSurSite
とHeureEffective
間のマージを取得する必要があり、彼らはすでにdatetime.datetime()
データです。
df1
という新しいDataFrame
があります。彼らはすべてのdatetime.datetime()
のデータがあるので、私は直接減算を実行しようとしました
NoDemande NoUsager Sens IdVehiculeUtilise Fait HeureArriveeSurSite HeureEffective Periods
42196000013 000001 + 287Véh 1 11/07/2015 08:02:07 11/07/2015 08:02:13 Matin
42196000002 000314 + 263Véh 1 11/07/2015 09:37:43 11/07/2015 09:53:37 Matin
42196000016 002372 + 287Véh 1 11/07/2015 09:46:42 11/07/2015 10:01:39 Matin
42196000015 000466 + 287Véh 1 11/07/2015 09:46:42 11/07/2015 10:01:39 Matin
:
df1 = df_NoMissing_IDV[(df_NoMissing_IDV['Sens'] == '+') & (df_NoMissing_IDV['Periods'] == 'Matin')]
そしてdf1
は、このようになります
df_NoMissing_IDV['DureeService'] = df1['HeureEffective']-df1['HeureArriveeSurSite']
しかし、それはTypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'
そして私も計算をしようとしましたdatetime.time()
タイプで、TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'
と返されました。どうすればいいですか?
EDIT
私はdatetime()
からdf1
の列を変換:
df1.HeureArriveeSurSite = pd.to_datetime(df1.HeureArriveeSurSite)
df1.HeureEffective = pd.to_datetime(df1.HeureEffective)
しかし、次のステップはまだ間違って返された:ValueError: cannot reindex from a duplicate axis
を私はdatetime()
にdf_NoMissing_IDV
で列を変換する場合:
df_NoMissing_IDV.HeureArriveeSurSite = pd.to_datetime(df_NoMissing_IDV.HeureArriveeSurSite)
df_NoMissing_IDV.HeureEffective = pd.to_datetime(df_NoMissing_IDV.HeureEffective)
同じ問題が残ります。
すべてのヘルプは〜
を、私はあなたが列を変換する必要があると思います'datetime'に' - df_NoMissing_IDV.HeureArriveeSurSite = pdf.to_datetime(df_NoMissing_IDV.HeureArriveeSurSite) ' ' df_NoMissing_IDV.HeureEffective = pd.to_datetime(df_NoMissing_IDV.HeureEffective) ' – jezrael
DataFrame =' df1'の列を 'datetime'に変換することを意味しますか? 'df_NoMissing_IDV'の列は既に' datetime'にあったからです。しかし、次のステップはまだ間違っています。 'df_NoMissing_IDV ['DureeService'] = df1 ['HeureEffective'] - df1 ['HeureArriveeSurSite']'、戻り値: 'ValueError:重複軸から再インデックスできません。 – ch36r5s
Hmmm。いくつかの重複があります。エラーを返すサンプルを追加できますか? – jezrael