あなたはUnit #
あなたが望むものを達成するために、次のコードを使用することができ、複数の持つデータフレームを持っていると仮定すると:
import datetime
import pandas as pd
df = pd.DataFrame([[7417, "2/6/2017", "3/5/2017"],[7418, "3/6/2017", "4/7/2017"]],
columns = ["Unit #", "Start Date", "End Date"])
# Convert dtaframe to dates
df['Start Date'] = pd.to_datetime(df['Start Date'])
df['End Date'] = pd.to_datetime(df['End Date'])
df_out = pd.DataFrame()
week = 7
# Iterate over dataframe rows
for index, row in df.iterrows():
date = row["Start Date"]
date_end = row["End Date"]
unit = row["Unit #"]
# Get the weeks for the row
while date < date_end:
date_next = date + datetime.timedelta(week - 1)
df_out = df_out.append([[unit, date, date_next]])
date = date_next + datetime.timedelta(1)
# Remove extra index and assign columns as original dataframe
df_out = df_out.reset_index(drop=True)
df_out.columns = df.columns
だからあなたの場合入力データフレーム:
>>> df
Unit # Start Date End Date
0 7417 2017-02-06 00:00:00 2017-03-05 00:00:00
1 7418 2017-03-06 00:00:00 2017-04-07 00:00:00
出力df_out
woul dのように見える:
>>> df_out
Unit # Start Date End Date
0 7417 2017-02-06 00:00:00 2017-02-12 00:00:00
1 7417 2017-02-13 00:00:00 2017-02-19 00:00:00
2 7417 2017-02-20 00:00:00 2017-02-26 00:00:00
3 7417 2017-02-27 00:00:00 2017-03-05 00:00:00
4 7418 2017-03-06 00:00:00 2017-03-12 00:00:00
5 7418 2017-03-13 00:00:00 2017-03-19 00:00:00
6 7418 2017-03-20 00:00:00 2017-03-26 00:00:00
7 7418 2017-03-27 00:00:00 2017-04-02 00:00:00
8 7418 2017-04-03 00:00:00 2017-04-09 00:00:00
あなたは何を試しましたか? –