Iは以下のようにデータセットを有する:日付計算(TypeError例外:サポートされていないオペランドタイプ(S) - : 'STR' と 'STR')
date_time srch_co srch_ci
0 2014-11-03 16:02:28 2014-12-19 2014-12-15
1 2013-03-13 19:25:01 2013-03-14 2013-03-13
2 2014-10-13 13:20:25 2015-04-10 2015-04-03
3 2013-11-05 10:40:34 2013-11-08 2013-11-07
4 2014-06-10 13:34:56 2014-08-08 2014-08-03
5 2014-12-16 14:34:39 2014-12-17 2014-12-16
が、これは、データセットの情報である。
私は何をしたいのは、以下の機能を使用して、2つの新しい列を作成している <class 'pandas.core.frame.DataFrame'>
RangeIndex: 100000 entries, 0 to 99999
Data columns (total 3 columns):
date_time 100000 non-null datetime64[ns]
srch_co 99878 non-null object
srch_ci 99878 non-null object
dtypes: datetime64[ns](1), object(2)
memory usage: 2.3+ MB
:
def duration(row):
delta = (row['srch_co'] - row['srch_ci'])/np.timedelta64(1, 'D')
if delta <= 0:
return np.nan
else:
return delta
sample['duration'] = sample.apply(duration, axis=1)
def days_in_advance(row):
delta = (row['srch_ci'] - row['date_time'])/np.timedelta64(1, 'D')
if delta < 0:
return np.nan
else:
return delta
sample['days_in_advance'] = sample.apply(days_in_advance, axis=1)
をしかし、それは私がしたい日付の計算のように思えます常にエラーにぶつかります。私は検索し、いくつかの解決策を見つけて試しましたが、エラーを作成するか、または日付を不正確な値にするかのどちらかです。任意のヒントは感謝
sample["duration"] = sample["srch_co"] - sample["srch_ci"]
sample["days_in_advance"] = sample["srch_co"] - sample["date_time"]
:私はちょうど、各列の差異を計算する新しい列を作成したい
#1)
def to_integer(dt_time):
return 10000*dt_time.year + 100*dt_time.month + dt_time.day
#2)
datetime.strptime(str(row[2]), '%Y%m%d%H%M%S')
#3)
pd.to_numeric(sample['date_time'], errors='coerce')
#4)
sample['srch_ci_int'] = sample['srch_ci'].astype(str).astype(int)
:
私が使用しようとした方法のようなです。
ここからわかる情報から、私は単純にth 'srch_ *'列から 'datetime'オブジェクトへの列は役に立ちます。 –
私はなぜそれについて考えなかったのか分かりません。ありがとう! 'サンプル[ 'srch_co'] = pd.to_datetime(サンプル[ 'srch_co']) サンプル[ 'srch_ci'] = pd.to_datetime(サンプル[ 'srch_ci'])' これが働きました。 – tmhs