簡體   English   中英

使用熊貓從現有列中添加新日期列

[英]add column of new dates from existing columns using pandas

我有一個日期和星期的數據框,如下所示:

weeks = ["2016 W08","2016 W09","2016 W10","2016 W11"]
date = ["2-22-16", "2-29-16", "3-7-16", "3-14-16"]
df = pd.DataFrame(
{'week': weeks,
 'date': date,
 })
df
          date      week
0   2016-02-22  2016 W08
1   2016-02-29  2016 W09
2   2016-03-07  2016 W10
3   2016-03-14  2016 W11

我試圖非常簡單地創建一個比date值晚7天的新列end

我完全不喜歡for循環,卻錯過了如何循環遍歷每個索引。

import datetime
for row in df['date']:
    start_date = df[row]
    df['end_date'] = start_date + datetime.timedelta(days = 7)

我知道我已經接近答案了,但是錯過了!

from datetime import timedelta
df.date=pd.to_datetime(df.date)
df.date+timedelta(days=7)

Out[691]: 
0   2016-02-29
1   2016-03-07
2   2016-03-14
3   2016-03-21
Name: date, dtype: datetime64[ns]

如果需要循環:

import datetime
for i,row in df.iterrows():
    df.loc[i,'new']= row['date'] + datetime.timedelta(days = 7)
df
Out[698]: 
        date      week        new
0 2016-02-22  2016 W08 2016-02-29
1 2016-02-29  2016 W09 2016-03-07
2 2016-03-07  2016 W10 2016-03-14
3 2016-03-14  2016 W11 2016-03-21

編輯:為什么您的循環不起作用

for row in df['date']:
    start_date = row
    print(start_date + datetime.timedelta(days=7))

此處的row返回date的值,不能通過其自身的值調用df值。

嘗試使用pd.DateOffset

import pandas as pd
weeks = ["2016 W08","2016 W09","2016 W10","2016 W11"]
date = ["2-22-16", "2-29-16", "3-7-16", "3-14-16"]
df = pd.DataFrame(
{'week': weeks,
 'date': date,
 })
df['date'] = pd.to_datetime(df['date']) #convert date column to datetime format
df['end_date'] = pd.DatetimeIndex(df['date']) + pd.DateOffset(7) #create new column end_date which is 7 days later
df

df將是:

    date        week        end_date
0   2016-02-22  2016 W08    2016-02-29
1   2016-02-29  2016 W09    2016-03-07
2   2016-03-07  2016 W10    2016-03-14
3   2016-03-14  2016 W11    2016-03-21

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM