在pand中计算范围内的元素

2024-05-15 04:45:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表格,在第一列中有整数(7,8,17467等)表示秒数,在另一列中我有在那几秒钟内传递的数据包数。我想在10秒的范围内对每秒发生的所有数据包求和。因此,我想得到每10秒后的数据包数,以便更好地可视化问题。一个问题是,我没有在每秒钟的数据包,但例如,在第二个数字5我没有数据包和行与时间=5不存在。你知道吗

有人有什么建议吗?你知道吗

rpl_dio = data.loc[data['MessageLabel'] == 0]
rpl_dio['Time'] = rpl_dio['Time'].astype(int)
rpl_dio_total = rpl_dio.groupby('Time')['MessageLabel'].count().reset_index(name='PackTime')
rpl_dio_total = rpl_dio_total.sort_values(by='Time',ascending=True)

plt.figure(figsize=(15,9))
plt.plot(rpl_dio_total['Time'],rpl_dio_total['PackTime'])
plt.title( "DIO packets rate" )
plt.ylabel( "Number of packets" )
plt.xlabel( "Time [s]" )
plt.show()

Tags: datatime可视化plt整数数据包表格total
3条回答

这是数据集的一小部分

enter image description here

我将首先添加一个带有Timestamp的新列(输入日期),然后将它和秒的timedelta结合起来

df['Seconds'] = pd.Timestamp('2019/01/01 00:00:00') + pd.to_timedelta(df['Time'], unit='s')

Out[61]: 
   Time  PackTime             Seconds
0     7        32 2019-01-01 00:00:07
1     9        53 2019-01-01 00:00:09
2    10        34 2019-01-01 00:00:10
3    11        53 2019-01-01 00:00:11
4    12        34 2019-01-01 00:00:12

并将'Seconds'列设置为索引

df.set_index('Seconds', inplace=True)
Out[62]: 
                     Time  PackTime
Seconds                            
2019-01-01 00:00:07     7        32
2019-01-01 00:00:09     9        53
2019-01-01 00:00:10    10        34
2019-01-01 00:00:11    11        53
2019-01-01 00:00:12    12        34

现在可以使用resample()方法,其中'10S'是10秒

df['PackTime'].resample('10S').sum()

 Out[63]: 
 Seconds
 2019-01-01 00:00:00     85
 2019-01-01 00:00:10    121
 Freq: 10S, Name: PackTime, dtype: int64

请尝试以下操作:

pd.cut(df.Time, bins=np.arange(0, 100, 10)).groupby('Time').count()

相关问题 更多 >

    热门问题