python-3.x - 按截止时间分组观察

标签 python-3.x pandas

我有一个截止时间列表 list = [16:30:00.100, 16:30:00.200, 16:30:00.350, 16:30:00.450]

我的观察如下:

16:30:00.095    A
16:30:00.097    B
16:30:00.122    C
16:30:00.255    D
16:30:00.322    E
16:30:00.420    F
16:30:00.569    G

我想在这里实现的是根据截止时间对我的观察进行分组(具体来说,我想看看我的哪个截止时间能够捕获观察结果 - 即第一个截止时间足够快以捕获 C,但对于 A/B 来说太慢了)。所需的输出应如下所示:

cutoff          observations captured

16:30:00.100    C
16:30:00.200    D    E
16:30:00.350    F
16:30:00.450    G
not possible    A    B

我尝试过使用 pd.cut,但它不允许时间敏感度达到毫秒,或者至少我不知道。任何帮助将不胜感激。谢谢!

最佳答案

我认为 cut 的想法工作得很好,时间数据也被 to_timedelta 转换为时间增量, 用 fillna 替换不匹配的值,最后聚合 join:

print (df)
           time col
0  16:30:00.095   A
1  16:30:00.097   B
2  16:30:00.122   C
3  16:30:00.255   D
4  16:30:00.322   E
5  16:30:00.420   F
6  16:30:00.569   G

df['time'] = pd.to_timedelta(df['time'].astype(str))

L = ['16:30:00.100', '16:30:00.200', '16:30:00.350', '16:30:00.450']
v = pd.to_timedelta(L + [pd.Timedelta.max])
df['b'] = pd.cut(df['time'], bins=v, labels = L)
df['b'] = df['b'].cat.add_categories(['not possible'])
df['b'] = df['b'].fillna('not possible')
print (df)
             time col             b
0 16:30:00.095000   A  not possible
1 16:30:00.097000   B  not possible
2 16:30:00.122000   C  16:30:00.100
3 16:30:00.255000   D  16:30:00.200
4 16:30:00.322000   E  16:30:00.200
5 16:30:00.420000   F  16:30:00.350
6 16:30:00.569000   G  16:30:00.450

df2 = df.groupby('b')['col'].apply(', '.join).reset_index()
print (df2)
              b   col
0  16:30:00.100     C
1  16:30:00.200  D, E
2  16:30:00.350     F
3  16:30:00.450     G
4  not possible  A, B

关于python-3.x - 按截止时间分组观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389869/

相关文章:

python - 使用 python 比较两个目录中的文件以查找一个目录中的文件而不是另一个目录中的文件 - 与子目录结构无关

python - 如何从多行打印到一行

python - PyQt5 中基于 QScintilla 的文本编辑器,具有可点击的函数和变量

python - 使用 ProxyConnector 进行 aiohtttp 连接池

python - 如何在 Pandas 数据框中的日期时间检查前几行中的行值?

python - 为什么我的 Python 函数在调用我的函数后会创建 None 类型?

python - 如何使用 pandas 或其他 Python 包绘制漂亮的彩色表格?

python - Pandas /pyplot直方图: can plot df but not subset

python - 在 Pandas 中按整数天计算滚动平均值

python - 使用 echo 写入文件的换行符在 shell 中有效,但在 Python 3 中为文字