Pandas DataFrame按条件筛选数据后索引不连续问题的处理

当使用Pandas DataFrame按条件筛选数据后,可能会出现索引不连续的情况。本文介绍了两种解决方案:一是直接引用不连续的索引,二是通过重建索引来实现连续性。详细步骤和示例代码帮助理解这两个方法。

Pandas DataFrame按条件筛选数据后索引不连续问题的处理

方法一:直接引用不连续的索引

例如:

#df.index就是取当前索引,与索引是否连续无关
df['starttime_datetime']=[datetime.datetime.fromtimestamp(time.mktime(df['Start_Time_Format'][i])) for i in df.index]

方法二:重建索引

tmp=df['endtime-starttime'][0:10]
print(tmp)
print(tmp.shape)
0    00:05:21
5    00:09:46
18   00:07:14
21   00:11:53
23   00:15:17
25   00:25:59
27   00:03:35
31   00:43:30
32   00:16:18
33   00:06:50
Name: endtime-starttime, dtype: timedelta64[ns]
(10,)
#转换为DataFrame,便于下一步增加一列。否则为list类型无法增加列
tmp=pd.DataFrame(tmp)  
print(tmp)
print(tmp.shape)
print(type(tmp))
   endtime-starttime
0           00:05:21
5           00:09:46
18          00:07:14
21          00:11:53
23          00:15:17
25          00:25:59
27          00:03:35
31          00:43:30
32          00:16:18
33          00:06:50
(10, 1)
<class 'pandas.core.frame.DataFrame'>
#给tmp增加一列
tmp['index']=range(tmp.shape[0])
print(tmp)
   endtime-starttime  index
0           00:05:21      0
5           00:09:46      1
18          00:07:14      2
21          00:11:53      3
23          00:15:17      4
25          00:25:59      5
27          00:03:35      6
31          00:43:30      7
32          00:16:18      8
33          00:06:50      9
#用set_index()方法将index列设置为索引
tmp.set_index('index')
print(tmp)
   endtime-starttime  index
0           00:05:21      0
5           00:09:46      1
18          00:07:14      2
21          00:11:53      3
23          00:15:17      4
25          00:25:59      5
27          00:03:35      6
31          00:43:30      7
32          00:16:18      8
33          00:06:50      9

参考文献:https://blog.youkuaiyun.com/htbeker/article/details/79417959

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值