[英]How to split column of type interval[int64,right) onto two columns in Pandas
給定一個df
如下
time_interval dvalue
0 (0, 5] 1
1 (5, 10] 2
2 (10, 15] 4
3 (15, 20] 5
4 (20, 25] 6
5 (25, 30] 7
6 (30, 35] 8
我想拆分time_interval
列,其中interval[int64, right]
類型如下
dvalue l u
0 1 0 5
1 2 5 10
2 4 10 15
3 5 15 20
4 6 20 25
5 7 25 30
6 8 30 35
重現df
的完整代碼如下
ls = range(0, 100, 5)
df=pd.DataFrame([1,2,4,5,6,7,8],columns=['dvalue'])
df.index = pd.IntervalIndex.from_breaks(ls[:len(df) + 1])
df.reset_index(inplace=True)
df.rename(columns={'index':'time_interval'},inplace=True)
您可以使用:
df[['l', 'u']] = [[x.left, x.right] for x in df['time_interval']]
output:
time_interval dvalue l u
0 (0, 5] 1 0 5
1 (5, 10] 2 5 10
2 (10, 15] 4 10 15
3 (15, 20] 5 15 20
4 (20, 25] 6 20 25
5 (25, 30] 7 25 30
6 (30, 35] 8 30 35
使用Interval.left
和Interval.right
:
df['l'] = df['time_interval'].apply(lambda x: x.left)
df['u'] = df['time_interval'].apply(lambda x: x.right)
df['l'] = df['time_interval'].map(lambda x: x.left)
df['u'] = df['time_interval'].map(lambda x: x.right)
或者首先轉換為IntervalIndex
:
idx = pd.IntervalIndex(df['time_interval'])
df['l'] = idx.left
df['u'] = idx.right
idx = pd.IntervalIndex(df['time_interval'])
df = df.assign(l=idx.left, u=idx.right)
print (df)
time_interval dvalue l u
0 (0, 5] 1 0 5
1 (5, 10] 2 5 10
2 (10, 15] 4 10 15
3 (15, 20] 5 15 20
4 (20, 25] 6 20 25
5 (25, 30] 7 25 30
6 (30, 35] 8 30 35
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.