我有一个数据框,其中包含列“ call_date”(这是通话日期)和“ call_week”(这是星期数)(一周不一定从星期一或星期日开始,不一定持续7天): / p>
我想做的是将新列添加到数据框,其中包含以“-”分隔的星期边界日期。例如,如果我们有一个WEEK
68,其最小CALL_DATE
为2019-04-25
,最大CALL_DATE
为2019-04-30
,则新列应包含值{{1} }。
我尝试过:
2019-04-25 - 2019-04-30
dfg = df.groupby('WEEK')['CALL_DATE'].agg(['min', 'max']).reset_index()
:
然后我通过dfg
将这些最小和最大列添加到df
:
join
现在,我尝试应用df = df.join(dfg, lsuffix = 'WEEK', rsuffix = 'WEEK')
函数将包含结果的列连接起来:
lambda
但是我收到一个错误:df['WEEK_TEXT'] = df.apply(lambda x : x['min'].strftime("%d.%m.%Y") + ' - ' + x['max'].strftime("%d.%m.%Y"))
我该如何解决?
答案 0 :(得分:1)
最好使用Series.dt.strftime
:
df['WEEK_TEXT'] = df['min'].dt.strftime("%d.%m.%Y") + ' - ' + df['max'].dt.strftime("%d.%m.%Y")
在您的解决方案中,按行进行的处理axis=1
是必需的:
f = lambda x : x['min'].strftime("%d.%m.%Y") + ' - ' + x['max'].strftime("%d.%m.%Y")
df['WEEK_TEXT'] = df.apply(f, axis=1)