私はパンダのデータフレームに2つの列があります。最初のものは1つの日付( 'action_date')、2つ目は日付のリスト( 'verification_date')です。私は 'action_date'の日付と対応する 'verification_date'列のリストの各日付との間の時間差を計算しようとしています。そして、df新しい列にverify_dateの日付の数を360日を超えて、または360日未満で。パンダの列リストの操作
は、ここに私のコードです:
DFは、日付が異なっているとして本当ではない各行に対して同じ値を持っている場合を除きこれはちょっと作品df = pd.DataFrame()
df['action_date'] = ['2017-01-01', '2017-01-01', '2017-01-03']
df['action_date'] = pd.to_datetime(df['action_date'], format="%Y-%m-%d")
df['verification_date'] = ['2016-01-01', '2015-01-08', '2017-01-01']
df['verification_date'] = pd.to_datetime(df['verification_date'], format="%Y-%m-%d")
df['user_name'] = ['abc', 'wdt', 'sdf']
df.index = df.action_date
df = df.groupby(pd.TimeGrouper(freq='2D'))['verification_date'].apply(list).reset_index()
def make_columns(df):
df = df
for i in range(len(df)):
over_360 = []
under_360 = []
for w in [(df['action_date'][i]-x).days for x in df['verification_date'][i]]:
if w > 360:
over_360.append(w)
else:
under_360.append(w)
df['over_360'] = len(over_360)
df['under_360'] = len(under_360)
return df
make_columns(df)
。たとえば、データフレームの最初の行では、action_dateとリストの両方の項目との間に検証日に360日以上の差があるため、over_360カラムには2が設定されます。ただし、空です代わりにunder_360列には1が入力されます。これは 'action_date'の2行目についてのみ正確です。
私はループを台無しにしていると感じていますが、本当に立ち往生しています。すべての助けてくれてありがとう!
すべてのaction_dateをすべての検証日と比較し、これらの2つの日付間の日数の差に応じてover_360およびunder_360の列に値を設定します。右 ? –