2014-11-13 108 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