我有一个数据框,如:
name1 name2 mounth
A B 01
B C 02
A B 02
A B 04
B C 03
我想创建一个列,显示每对名称的间隔:
name1 name2 interval
A B [1,2];[4,4]
B C [2,3]
是否可以在pandas中创建上述列的间隔?
答案 0 :(得分:3)
很难理解你为什么需要这个......
from itertools import chain
df.groupby(['name1','name2']).mounth.\
apply(lambda x :x.groupby(x.diff().ne(1).cumsum()).\
apply(lambda y: list(chain.from_iterable([y])) if len(y)>1 else
list(chain.from_iterable([y,y])))).\
groupby(level=['name1','name2']).apply(list)
Out[1305]:
name1 name2
A B [[1, 2], [4, 4]]
B C [[2, 3]]
Name: mounth, dtype: object