我经历了Convert columns into rows with PandasMerge timestamp column in pandas

Given

  start_time   time   process  ID
    14:05      14:16  A       1
    14:05      14:34  B       1
    14:05      15:00  C       1
    14:05      15:10  D       1
    14:12      14:19  A       2
    14:12      14:54  B       2

Goal

time   process    ID
14:05  start_time 1    (Previously it was in separate column)
14:16  A          1
14:34  B          1
15:00  C          1
15:10  D          1
14:12  start_time 2
14:19  A          2
14:54  B          2


df.groupby('ID').melt(df.columns.difference(['start_time']), value_name='time')

注意:每个ID中的start_time值保持不变.

推荐答案

您可以将数据视为两个单独的DataFrames,并按如下方式重新组合:

# Extract start_times and clean up to match column names
start_times = (
    df[['start_time', 'ID']]
    .drop_duplicates()
    .rename(columns={'start_time': 'time'})
    .assign(process='start_time')
)

# combine data vertically
out = (
    pd.concat([start_times, df.drop(columns='start_time')])
    .sort_values(['ID', 'time'])
    .reset_index(drop=True)
)

print(out)
    time  ID     process
0  14:05   1  start_time
1  14:16   1           A
2  14:34   1           B
3  15:00   1           C
4  15:10   1           D
5  14:12   2  start_time
6  14:19   2           A
7  14:54   2           B

Python相关问答推荐

跳过嵌套JSON中的级别并转换为Pandas Rame

Cython无法识别Numpy类型

不允许 Select 北极滚动?

在电影中向西北方向对齐""

获取PANDA GROUP BY转换中的组的名称

PySpark:如何最有效地读取不同列位置的多个CSV文件

如何在Django模板中显示串行化器错误

Polars表达式无法访问中间列创建表达式

比较两个有条件的数据帧并删除所有不合格的数据帧

在一个数据帧中,我如何才能发现每个行号是否出现在一列列表中?

如何在Polars中创建条件增量列?

Django更新视图未更新

try 使用RegEx解析由标识多行文本数据的3行头组成的日志(log)文件

为什么这个正则表达式没有捕获最后一次输入?

当使用随机均匀(a,b)时,b是包含的还是排他的?

将CONTEXT_PROCESSOR数据返回到html进行循环时出现问题

没有目标的验证数据

嘲弄直接导入的函数?

使用通配符标识扩展名为的文件

通过np.interp的辅助x轴:如何更改xlims