給定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)
uj5u.com熱心網友回復:
您可以使用:
df[['l', 'u']] = [[x.left, x.right] for x in df['time_interval']]
輸出:
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
uj5u.com熱心網友回復:
使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/479952.html
上一篇:使用列數可視化線圖
下一篇:如何將字典鍵作為資料框的列?
