私は、日付カラムとintカラムの2つのカラムを持つpandasデータフレームを持っていますが、日付カラムにintカラム(日数)を追加するだけです。私はdf.apply()を使って解決策を見つけましたが、それは私の完全なデータセットでは遅すぎました。私はベクター化された方法でこれを行うには多大な文書を見ません(私が見つけることができる最も近いものはthisでした)ので、私が見つけた解決策が最善の方法であることを確かめたかったのです。パンダ:timedeltaカラムをdatetimeカラムに追加する(ベクター化)
私の生データは、ints(日)の列としての文字列の単なる列です。
import pandas as pd
from datetime import timedelta
df = pd.DataFrame([['2016-01-10',28],['2016-05-11',28],['2016-02-23',15],['2015-12-08',30]],
columns = ['ship_string','days_supply'])
print df
ship_string days_supply
0 2016-01-10 28
1 2016-05-11 28
2 2016-02-23 15
3 2015-12-08 30
(働いていた)私の最初の考えは次のように.apply使用することでした:
def f(x):
return x['ship_date'] + timedelta(days=x['days_supply'])
df['ship_date'] = pd.to_datetime(df['ship_string'])
df['supply_ended'] = df.apply(f,axis = 1)
働いたが、非常に遅いです。私は質問に答えとして私の代わりの解決策を掲示しましたが、私はそれが "ベストプラクティス"であることを確認したいと思います。私はパンデーズの日付にtimedeltaの列を追加することで多くの良いスレッドを見つけることができませんでした(特にベクトル化された方法で)、私はもう少しユーザーフレンドリーなものを追加したいと思って、うまくいけば、これを行う。
df ['supply_ended'] = pd.to_datetime(df ['ship_string'])+ pd.to_timedelta(df ['days_supply']、 'd') '、新しい列を作成する必要はありません。 – jezrael
「DateOffset」はSeriesで動作しないので、関数 'pd.to_timedelta'を見つけることができませんでした。そのソリューションを投稿していただきありがとうございます! – FlorianGD