List = [0, 3, 2, 1]

这是我的Pandas 数据框.

TIME DATA DMMA CODE
0 0 days 00:00:00 Layer1 B
1 0 days 00:00:00 Layer2 S
2 0 days 00:08:00 Layer3 B
3 0 days 00:16:00 Layer4 S
4 0 days 00:24:00 Layer5 B
5 0 days 00:53:00 Layer6 S
6 0 days 01:16:00 Layer7 B
7 0 days 01:29:00 Layer8 S

这是我想要得到的最终结果.

TIME DATA
0 0 days 00:00:00 , 0 days 00:00:00 Layer1 , Layer2
1 0 days 00:08:00 , 0 days 01:29:00 Layer3 , Layer8
2 0 days 00:24:00 , 0 days 00:53:00 Layer5 , Layer6
3 0 days 01:16:00 , 0 days 00:16:00 Layer7 , Layer4

列表中元素的索引基本上是DMMA代码为"B"的数据的索引,元素本身是DMMA代码为"S"的数据的索引.

列表的第一个元素告诉我们"第一个代码:B应该与第一个代码:S组合在一起"

列表的第二个元素告诉我们"第二个代码:B应该与第四个代码:S分组",依此类推.

我不熟悉Pandas ,甚至找不到解决这个问题的方法.

推荐答案

您的数据基本上是乱序的,所以让我们对其重新排序:

info = [0, 3, 2, 1]
mask = df['DMMA CODE'].eq('S')
df.loc[mask] = df[mask].iloc[info].values

# Then we can get what you want fairly easily:
groups = df.groupby('DMMA CODE').cumcount()
out = df.groupby(groups).agg(list)
print(out)

输出:

                                 TIME              DATA DMMA CODE
0  [0 days 00:00:00, 0 days 00:00:00]  [Layer1, Layer2]    [B, S]
1  [0 days 00:08:00, 0 days 01:29:00]  [Layer3, Layer8]    [B, S]
2  [0 days 00:24:00, 0 days 00:53:00]  [Layer5, Layer6]    [B, S]
3  [0 days 01:16:00, 0 days 00:16:00]  [Layer7, Layer4]    [B, S]

Python相关问答推荐

根据不同列的值在收件箱中移动数据

Pandas 都是(),但有一个门槛

将输入管道传输到正在运行的Python脚本中

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

通过pandas向每个非空单元格添加子字符串

如何从pandas的rame类继承并使用filepath实例化

计算分布的标准差

实现神经网络代码时的TypeError

用渐近模计算含符号的矩阵乘法

如何使用两个关键函数来排序一个多索引框架?

Python避免mypy在相互引用中从另一个类重定义类时失败

并行编程:同步进程

如何将一组组合框重置回无 Select tkinter?

判断Python操作:如何从字面上得到所有decorator ?

如何训练每一个pandaprame行的线性回归并生成斜率

来自Airflow Connection的额外参数

如何获取给定列中包含特定值的行号?

生产者/消费者-Queue.get by list

极地数据帧:ROLING_SUM向前看

将多行数据循环到嵌套框架中的单行