我想知道如何使用数据框列中的开始日期,并让它根据另一列中的天数向数据框添加行。每天一个新日期。
本质上,我正在尝试转动这个数据框:
df = pd.DataFrame({
'Name':['Peter', 'Peter', 'Peter', 'Peter'],
'Planned_Start':['1/1/2019', '1/2/2019', '1/15/2019', '1/2/2019'],
'Duration':[2, 3, 5, 6],
'Hrs':[0.6, 1, 1.2, 0.3]})
...进入此数据框:
df_2 = pd.DataFrame({
'Name':['Peter', 'Peter', 'Peter', 'Peter', 'Peter', 'Peter', 'Peter', 'Peter'],
'Date':['1/1/2019', '1/2/2019', '1/2/2019', '1/3/2019', '1/4/2019','1/10/2019', '1/15/2019', '1/16/2019'],
'Hrs':[0.6, 0.6, 1, 1, 1, 1.2, 0.3, 0.3]})
我对一般编程很陌生,并尝试过以下方法:
df_2 = pd.DataFrame({
'date': pd.date_range(
start = df.Planned_Start,
end = pd.to_timedelta(df.Duration, unit='D'),
freq = 'D'
)
})
...和...
df["date"] = df.Planned_Start + timedelta(int(df.Duration))
运气不好。
最佳答案
我不完全确定您想要实现什么目标,因为从我看来您的 df_2 看起来有点错误。
如果您希望将持续时间列作为天并将这么多日期添加到日期列,则以下代码可以实现这一点:
您还可以使用 pd.Series.drop()
方法删除不需要的任何列:
df = pd.DataFrame({
'Name':['Peter', 'Peter', 'Peter', 'Peter'],
'Planned_Start':['1/1/2019', '1/2/2019', '1/15/2019', '1/2/2019'],
'Duration':[2, 3, 5, 6],
'Hrs':[0.6, 1, 1.2, 0.3]})
df_new = pd.DataFrame()
for i, row in df.iterrows():
for duration in range(row.Duration):
date = pd.Series([pd.datetime.strptime(row.Planned_Start, '%m/%d/%Y') + timedelta(days=duration)], index=['date'])
newrow = row.append(date)
df_new = df_new.append(newrow, ignore_index=True)
关于python - 如何使用 pandas 根据日期列和天数列将行添加到数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58960930/