2014-11-13 105 views
0

我有一個DataFrame,我需要爲每一行添加一條新信息 - 這條信息是從已經在數據框中的數據中推導出來的。向Pandas DataFrame添加新值

具體來說,我有個約會,我想借此日期和運行開了一個服務,並返回星期的日子,並將其插入到該行中新列:

結構現狀:

|Date  | Action1 | Action 2 | 
================================= 
|2014-10-15| a  | b  | 
================================= 
|2014-11-05| c  | d  | 
================================= 

的目標就是進入這種狀態:

|Date  |DOW | Action1 | Action 2 | 
======================================== 
|2014-10-15|Monday |a  | b  | 
======================================== 
|2014-11-05|Tuesday|c  | d  | 
======================================== 

我有一個功能,可以攝入的日期並返回DOW,

def DOW(date): 
    .....does some stuff.... 
    return Day_of_week 

但我不知道如何最好地迭代DataFrame中的日期並插入函數返回。

在一個標準的解釋,我將只是做:

for each in df: 
    each.update({'DOW':DOW(each['Date'])) 

回答

2

你不應該在所有的迭代。只要做到

df['DOW'] = df['Date'].map(DOW) 

這將調用在你的數據幀Date每個元素在你的DOW()功能,然後將結果分配給一個叫DOW列。

+0

這是完美的 - 但現在我遇到了日期時間格式的問題 - 類型錯誤:無法將「datetime.date」對象爲str隱含 我想趕緊打電話DF [「日期」] to_string( ) 但沒有運氣 - 有什麼想法? – tgunn

+1

@tgunn給定一個類型爲'datetime.date'的變量'd',可以調用'd.strftime('%F')'。要在矢量設置中使用標量函數,可以嘗試'df ['Date']。map(lambda x:x.strftime('%F'))'。 – chrisaycock