(Python 2.7、Pandas 0.9)
これは簡単なことのように思えますが、Pandasを使用してデータフレーム内の2つの日付列の差を計算する方法がわかりません。このデータフレームにはすでにインデックスがあるため、どちらかの列をDateTimeIndexにすることは望ましくありません。
私が使用した文字列から各日付列を変換するには:
data.Date_Column = pd.to_datetime(data.Date_Column)
そこから、2つの列の間の経過時間を取得するには、次のようにします。
data.Closed_Date - data.Created_Date
エラーを返します:
TypeError: %d format: a number is required, not a numpy.timedelta64
両方の列でdtypesをチェックすると、datetime64 [ns]が生成され、配列内の個々の日付はタイプtimestampです。
私は何が欠けていますか?
編集:
これは、個別のDateTimeIndexオブジェクトを作成して目的を達成できる例ですが、データフレームのコンテキストで実行しようとすると失敗します。
Created_Date = pd.DatetimeIndex(data['Created_Date'], copy=True)
Closed_Date = pd.DatetimeIndex(data['Closed_Date'], copy=True)
Closed_Date.day - Created_Date.day
[Out] array([ -3, -16, 5, ..., 0, 0, 0])
これで同じですが、データフレーム内にあります。
data.Created_Date = pd.DatetimeIndex(data['Created_Date'], copy=True)
data.Closed_Date = pd.DatetimeIndex(data.Closed_Date, copy=True)
data.Created_Date.day - data.Created_Date.day
AttributeError: 'Series' object has no attribute 'day'
それを試してみたい場合のデータの一部を次に示します。
data['Created Date'][0:10].to_dict()
{0: '1/1/2009 0:00',
1: '1/1/2009 0:00',
2: '1/1/2009 0:00',
3: '1/1/2009 0:00',
4: '1/1/2009 0:00',
5: '1/1/2009 0:00',
6: '1/1/2009 0:00',
7: '1/1/2009 0:00',
8: '1/1/2009 0:00',
9: '1/1/2009 0:00'}
data['Closed Date'][0:10].to_dict()
{0: '1/7/2009 0:00',
1: nan,
2: '1/1/2009 0:00',
3: '1/1/2009 0:00',
4: '1/1/2009 0:00',
5: '1/12/2009 0:00',
6: '1/12/2009 0:00',
7: '1/7/2009 0:00',
8: '1/10/2009 0:00',
9: '1/7/2009 0:00'}