Pandas 时间分组列

Pandas 时间分组列,pandas,dataframe,Pandas,Dataframe,我的df如下所示: Index Receiver Length Retry 1970-01-01 00:00:00.000000000 R1 10 0 1970-01-01 00:00:00.800000000 R1 10 1 1970-01-01 00:00:01.000287000

我的df如下所示:

Index                                Receiver     Length         Retry
1970-01-01 00:00:00.000000000         R1          10             0
1970-01-01 00:00:00.800000000         R1          10             1
1970-01-01 00:00:01.000287000         R2          10             0
1970-01-01 00:00:01.600896000         R2          10             0
1970-01-01 00:00:02.001388000         R1          10             1
1970-01-01 00:00:02.004698000         R1          10             1
1970-01-01 00:00:02.006706000         R2          10             0
1970-01-01 00:00:02.501351000         R2          10             0
1970-01-01 00:00:02.810382000         R1          10             0
1970-01-01 00:00:03.001981000         R1          10             1
1970-01-01 00:00:03.377116000         R1          10             1
1970-01-01 00:00:03.701811000         R2          10             1
1970-01-01 00:00:03.910326000         R2          10             0
1970-01-01 00:00:03.951355000         R2          10             1
我需要按时间(1S)对df进行分组,然后在每个组中,如果Retry==1,则为每个R1和R2添加长度列值

我使用了下面的代码,但当R1和R2没有重试=1(即不满足条件)时,它似乎会忽略行

期望输出为:

Index                        R1    R2
1970-01-01 00:00:00          10    0
1970-01-01 00:00:01          0     0
1970-01-01 00:00:02          20    0
1970-01-01 00:00:03          20    20
可以找到类似的问题。

您需要添加缺少的
datetime
s:

df2 = df2.reindex(pd.date_range(df2.index[0], df2.index[-1], freq='1S'), fill_value=0)
print (df2)
Receiver               R1    R2
1970-01-01 00:00:00  10.0   0.0
1970-01-01 00:00:01   0.0   0.0
1970-01-01 00:00:02  20.0   0.0
1970-01-01 00:00:03  20.0  20.0

我将首先使用数据透视,然后将数据分组:

df['Value'] = df['Length']*df['Retry']
df2 = pd.pivot_table(df, index=df.index, columns='Receiver', values='Value')
df2 = df2.groupby([pd.Grouper(freq='1S')]).sum()


它给出的错误是“UnboundLocalError:assignment前引用的局部变量“df2”在
df2=df.query(“Retry==1”).groupby([pd.Grouper(freq='1S'),'Receiver']).Length.sum().unstack().fillna(0)
是的,我就是这么做的。这两行在一个函数内。当我调用该函数时,它在您发布的行中给出了此错误。如果我在函数外同时运行这两行,它就可以正常工作。有什么线索吗?你能看到你的功能吗?是的,对,我正在想办法。。我我会再打给你的。谢谢
df['Value'] = df['Length']*df['Retry']
df2 = pd.pivot_table(df, index=df.index, columns='Receiver', values='Value')
df2 = df2.groupby([pd.Grouper(freq='1S')]).sum()