Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Panda dataframe使用多索引重新采样timeseries索引_Python_Pandas_Dataframe_Time Series - Fatal编程技术网

Python Panda dataframe使用多索引重新采样timeseries索引

Python Panda dataframe使用多索引重新采样timeseries索引,python,pandas,dataframe,time-series,Python,Pandas,Dataframe,Time Series,我有一组数据,如何将其时间戳重采样为1秒间隔,并用0填充数据列(而不是“UUT”) 输出如下内容: UUT Sent Received Latency(ms) Sum DateTime 2018-01-25 15:03:05 uut-1 1 1 427 2 2018-01-25 15:03:0

我有一组数据,如何将其时间戳重采样为1秒间隔,并用0填充数据列(而不是“UUT”)

输出如下内容:

                        UUT  Sent  Received Latency(ms)  Sum
DateTime                                                    
2018-01-25 15:03:05  uut-1     1         1         427    2
2018-01-25 15:03:05  uut-2     1         1         664    2
2018-01-25 15:03:06  uut-1     0         0           0    0
2018-01-25 15:03:06  uut-2     0         0           0    0
2018-01-25 15:03:07  uut-1     0         0           0    0
2018-01-25 15:03:07  uut-2     0         0           0    0
2018-01-25 15:03:08  uut-1     0         0           0    0
2018-01-25 15:03:08  uut-2     0         0           0    0
....
2018-01-25 15:03:17  uut-1     1         1         637    2
2018-01-25 15:03:17  uut-2     1         1        1229    2
2018-01-25 15:03:18  uut-1     0         0           0    0
2018-01-25 15:03:18  uut-2     0         0           0    0
.....
grouped.get_group('uut1')
                    second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:06   uut1  0  0
2018-01-25 15:03:07   uut1  0  0
2018-01-25 15:03:08   uut1  0  0
...
2018-01-25 15:03:27   uut1  0  0
2018-01-25 15:03:28   uut1  0  0
2018-01-25 15:03:29   uut1  5  5

最终目标是使用groupby(“UUT”)绘制每个UUT的时间与任何其他剩余列(例如“发送”、“接收”、“延迟(毫秒)”)

这并不整洁,但您可以使用以下代码完成您想要的事情


1。复制

idx=['2018-01-25 15:03:05','2018-01-25 15:03:05','2018-01-25 15:03:17','2018-01-25 15:03:17','2018-01-25 15:03:29','2018-01-25 15:03:29']
dt=pd.DatetimeIndex(idx)
数组=[
dt,
['uut1','uut2','uut1','uut2','uut1','uut2']
]
元组=列表(zip(*数组))
index=pd.MultiIndex.from_元组(元组,名称=['first','second'])
data=pd.DataFrame({
“a”:范围(1,7),
“b”:范围(1,7)},
索引=索引)

2。操纵

data\u=data.reset\u索引(“秒”)
第二,数据中的df_gb被操纵。groupby('second'):
vars()['df_{}.format(second)]=df_gb.resample('1s').first().fillna(0)
df_uut1['second']='uut1'
df_uut2['second']='uut2'

3。结果



这是你想做的吗?同样,代码本身不那么可读。不过,我想你可以自己做得更好。

这并不整洁,但你可以用下面的代码做你想做的事情


1。复制

idx=['2018-01-25 15:03:05','2018-01-25 15:03:05','2018-01-25 15:03:17','2018-01-25 15:03:17','2018-01-25 15:03:29','2018-01-25 15:03:29']
dt=pd.DatetimeIndex(idx)
数组=[
dt,
['uut1','uut2','uut1','uut2','uut1','uut2']
]
元组=列表(zip(*数组))
index=pd.MultiIndex.from_元组(元组,名称=['first','second'])
data=pd.DataFrame({
“a”:范围(1,7),
“b”:范围(1,7)},
索引=索引)

2。操纵

data\u=data.reset\u索引(“秒”)
第二,数据中的df_gb被操纵。groupby('second'):
vars()['df_{}.format(second)]=df_gb.resample('1s').first().fillna(0)
df_uut1['second']='uut1'
df_uut2['second']='uut2'

3。结果



这是你想做的吗?同样,代码本身不那么可读。我想你可以自己做得更好。

我最后使用了重新采样

data2 = data.reset_index(level=[1])
                    second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:05   uut2  2  2
2018-01-25 15:03:17   uut1  3  3
2018-01-25 15:03:17   uut2  4  4
2018-01-25 15:03:29   uut1  5  5
2018-01-25 15:03:29   uut2  6  6
然后是群比

grouped = data2.groupby('second')
<pandas.core.groupby.DataFrameGroupBy object at 0x0000000005AB6E48>

# the groupby dataframe looks something like this:
grouped.get_group('uut1')
               second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:17   uut1  3  3
2018-01-25 15:03:29   uut1  5  5
最后,将秒中的所有“0”项替换为“uut1” 分组的_df['second']='uut1'

最后的数据帧如下所示:

                        UUT  Sent  Received Latency(ms)  Sum
DateTime                                                    
2018-01-25 15:03:05  uut-1     1         1         427    2
2018-01-25 15:03:05  uut-2     1         1         664    2
2018-01-25 15:03:06  uut-1     0         0           0    0
2018-01-25 15:03:06  uut-2     0         0           0    0
2018-01-25 15:03:07  uut-1     0         0           0    0
2018-01-25 15:03:07  uut-2     0         0           0    0
2018-01-25 15:03:08  uut-1     0         0           0    0
2018-01-25 15:03:08  uut-2     0         0           0    0
....
2018-01-25 15:03:17  uut-1     1         1         637    2
2018-01-25 15:03:17  uut-2     1         1        1229    2
2018-01-25 15:03:18  uut-1     0         0           0    0
2018-01-25 15:03:18  uut-2     0         0           0    0
.....
grouped.get_group('uut1')
                    second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:06   uut1  0  0
2018-01-25 15:03:07   uut1  0  0
2018-01-25 15:03:08   uut1  0  0
...
2018-01-25 15:03:27   uut1  0  0
2018-01-25 15:03:28   uut1  0  0
2018-01-25 15:03:29   uut1  5  5

我最终使用了重新采样

data2 = data.reset_index(level=[1])
                    second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:05   uut2  2  2
2018-01-25 15:03:17   uut1  3  3
2018-01-25 15:03:17   uut2  4  4
2018-01-25 15:03:29   uut1  5  5
2018-01-25 15:03:29   uut2  6  6
然后是群比

grouped = data2.groupby('second')
<pandas.core.groupby.DataFrameGroupBy object at 0x0000000005AB6E48>

# the groupby dataframe looks something like this:
grouped.get_group('uut1')
               second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:17   uut1  3  3
2018-01-25 15:03:29   uut1  5  5
最后,将秒中的所有“0”项替换为“uut1” 分组的_df['second']='uut1'

最后的数据帧如下所示:

                        UUT  Sent  Received Latency(ms)  Sum
DateTime                                                    
2018-01-25 15:03:05  uut-1     1         1         427    2
2018-01-25 15:03:05  uut-2     1         1         664    2
2018-01-25 15:03:06  uut-1     0         0           0    0
2018-01-25 15:03:06  uut-2     0         0           0    0
2018-01-25 15:03:07  uut-1     0         0           0    0
2018-01-25 15:03:07  uut-2     0         0           0    0
2018-01-25 15:03:08  uut-1     0         0           0    0
2018-01-25 15:03:08  uut-2     0         0           0    0
....
2018-01-25 15:03:17  uut-1     1         1         637    2
2018-01-25 15:03:17  uut-2     1         1        1229    2
2018-01-25 15:03:18  uut-1     0         0           0    0
2018-01-25 15:03:18  uut-2     0         0           0    0
.....
grouped.get_group('uut1')
                    second  a  b
first                           
2018-01-25 15:03:05   uut1  1  1
2018-01-25 15:03:06   uut1  0  0
2018-01-25 15:03:07   uut1  0  0
2018-01-25 15:03:08   uut1  0  0
...
2018-01-25 15:03:27   uut1  0  0
2018-01-25 15:03:28   uut1  0  0
2018-01-25 15:03:29   uut1  5  5

伟大的事实上,你的一些代码比我的更可读。谢谢分享!伟大的事实上,你的一些代码比我的更可读。谢谢分享!