如何基于列中具有相同值的行对行进行分组,然后在每个子集上运行代码?

2024-09-29 23:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个csv文件,我通过一些代码行创建了它,包括以下内容:

“BatchID”列,格式为DEFGH12-01,指定每个单元所属的批次;单元及其完整ID号的列,格式为DEFGH12-01\u x01\u y01。每个单元(UnitID)属于一个特定的批(因此单元ID号对应于它所属的BatchID)

我有一个特定的算法,我一直运行在整个数据集的单位ID。我想根据具有相同batchID值(因为每个批下有许多唯一的单元)对单元进行分组,然后在这些单元批的子集上运行算法

我该怎么做


Tags: 文件csv数据代码算法id格式单位
1条回答
网友
1楼 · 发布于 2024-09-29 23:29:00

最简单的方法是使用分组。 举个例子:

创建数据:

df = pd.DataFrame({"A": [1,2,3,4,5], "B":[1,2,3,4,5], "C": ['GROUP_A', 'GROUP_A', 'GROUP_A', 'GROUP_B', 'GROUP_B']})

应用您的函数:

groups_list = []
for group_name, group_values in df.groupby("C"):
    # applying a function on a column based on group
    group_values = group_values.assign(A=group_values.A.apply(lambda x: x ** 2))

    # for re-creating the df
    groups_list.append(group_values)

# if there is only 1 group , else is needed
mod_df = pd.concat(groups_list, axis=0) if len(groups_list) > 1 else groups_list[0]
print(mod_df)

相关问题 更多 >

    热门问题