【发布时间】:2018-05-20 23:54:54
【问题描述】:
我有一个数据框,其中包含 Name(名称)、value(2016 年发生事件的那一周)、binary(事件发生的指示,“1”)列,例如:
df
Name value binary
apple 2016 W16 1
orange 2016 W17 1
melon 2016 W20 1
berry 2016 W17 1
lime 2016 W19 1
我有兴趣向此数据框添加行,以便每个Name(苹果、橙色等)在事件发生之前的几周内的value 列中都有一个项目。同样,事件发生的星期在df 中的value 列中表示。感兴趣的时间段是 2016 W16 和 2016 W19 之间的周数,例如:
start_end_weeks
week
2016 W16
2016 W17
2016 W18
2016 W19
我的问题是我需要用 2016 W16 和 2016 W19 之间的周数填充行,这些周在 df 中没有表示。这就是我的意思:
df_result
Name value binary
apple 2016 W16 1
orange 2016 W16 0
orange 2016 W17 1
melon 2016 W16 0
melon 2016 W17 0
melon 2016 W18 0
melon 2016 W19 0
melon 2016 W20 1
berry 2016 W17 1
lime 2016 W19 1
...
但由于value 不是传统的日期时间对象,我不确定如何让 python 识别 2016 W16 发生在 2016 W17 之前,然后只填充值 before value 在df 中声明的星期。
我不知道从哪里开始,所以如果有人可以帮助我将 value 转换为一个很棒的日期时间对象,我可以从那里开始。任何其他见解表示赞赏。
我发现了这个堆栈溢出问题,这是我目前所知道的:Match rows in one Pandas dataframe to another based on three columns。
【问题讨论】:
-
鉴于您的星期值的字符串结构按重要性较高的顺序排序,任何字典比较都可以工作(即
"2016 W15" < "2016 W28"评估为True)。我不确定我是否理解您的确切问题。我将不得不重新阅读您的问题几次...
标签: python pandas numpy datetime dataframe