pandas创建在上个月发生id值的功能

时间:2017-12-18 22:34:05

标签: pandas

我在像这样的pandas数据框中有数据:

id | month | count
-------------------
01 | 1 | 517
02 | 1 | 283
01 | 2 | 123
02 | 2 | 321
03 | 2 | 332

因此,相同的ID可以针对不同的月份出现,但有时情况并非如此。 (例如,在上面的例子中,id 03不会出现在第1个月。

我想要做的是创建一个新列previous_month_count,它会回顾上一个月是否出现ID,并返回计数或者如果没有上个月计数,则返回null或0。

dup = df
dup = dup.rename(columns={"month": "previous_month"}, inplace=True)
df['previous_month'] = df['month'] -1
df.merge(dup[['count']], on=['id','previous_month'])

这会生成

  

KeyError:'月'

但是,期望的效果是将上个月的计数与当前月份的计数合并。

1 个答案:

答案 0 :(得分:1)

使用您自己的代码

dup = df.copy()
dup.rename(columns={"month": "previous_month"}, inplace=True)
df['previous_month'] = df['month'] -1
df.merge(dup, on=['id','previous_month'],how='left')



Out[358]: 
   id  month  count_x  previous_month  count_y
0   1      1      517               0      NaN
1   2      1      283               0      NaN
2   1      2      123               1    517.0
3   2      2      321               1    283.0
4   3      2      332               1      NaN