我有这样的df:

import pandas as pd
df = pd.DataFrame({'Time' : ['s_1234','s_1234', 's_1234', 's_5678', 's_8998','s_8998' ],
                   'Control' : ['A', '', '','B', 'C', ''],
                   'tot_1' : ['1', '1', '1','1', '1', '1'],
                   'tot_2' : ['2', '2', '2','2', '2', '2']})
--------
   Time Control tot_1 tot_2
0  1234       A     1     2
1  1234       A     1     2
2  1234             1     2
3  5678       B     1     2
4  8998       C     1     2
5  8998             1     2

我希望每次都有相同的时间值合并成一列.我还希望将"TOT_1"和"TOT_2"列相加在一起.最后,我想继续判断是否有出席.喜欢:

   Time Control tot_1 tot_2
0  1234       A     3     6
1  5678       B     1     2
2  8998       C     2     4

推荐答案

您的数据与示例df不同.

构建DF:

import pandas as pd
df = pd.DataFrame({'Time' : ['s_1234','s_1234', 's_1234', 's_5678', 's_8998','s_8998' ],
                   'Control' : ['A', '', '','B', 'C', ''],
                   'tot_1' : ['1', '1', '1','1', '1', '1'],
                   'tot_2' : ['2', '2', '2','2', '2', '2']})

df.Time = df.Time.str.split("_").str[1]
df = df.astype({"tot_1": int, "tot_2": int})

按时间分组并聚合值.

df.groupby('Time').agg({"Control": "first", "tot_1": "sum", "tot_2": "sum"}).reset_index()


   Time Control  tot_1  tot_2
0  1234       A      3      6
1  5678       B      1      2
2  8998       C      2      4

编辑备注:不确定这是否是最好的方法,但您可以这样构建您的AGG信息:

n = 2
agg_ = {"Control": "first"} | {f"tot_{i+1}": "sum" for i in range(n)}
df.groupby('Time').agg(agg_).reset_index()

Python相关问答推荐

手动设置seborn/matplotlib散点图连续变量图例中显示的值

ConversationalRetrivalChain引发键错误

具有相同图例 colored颜色 和标签的堆叠子图

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''

如何在Great Table中处理inf和nans

pandas:在操作pandora之后将pandora列转换为int

如何重新组织我的Pandas DataFrame,使列名成为列值?

多个矩阵的张量积

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

为什么在生成时间序列时,元组索引会超出范围?

如何在Python中画一个只能在对角线内裁剪的圆?

如何在networkx图中提取和绘制直接邻居(以及邻居的邻居)?

Django-修改后的管理表单返回对象而不是文本

我应该使用哪一个来判断python中枚举值的唯一性?

在伪子进程中模拟标准输出.打开

Pandas 身上的负数造型

带极点数据帧的倒数值(&Q;)

SqlalChemy-同时过滤父对象和子对象

[]和Expression API的区别是什么?

特定 struct 中的最大元素