Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据列中具有相同值的行对行进行分组,然后在每个子集上运行代码?_Python_Pandas_Csv_Group By_Grouping - Fatal编程技术网

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

Python 如何根据列中具有相同值的行对行进行分组,然后在每个子集上运行代码?,python,pandas,csv,group-by,grouping,Python,Pandas,Csv,Group By,Grouping,我有一个csv文件,我通过一些代码行创建了该文件,其中包括以下内容: “BatchID”列,格式为DEFGH12-01,指定每个单元所处的批次;以及一列单元及其完整ID号,“UnitID”,格式为DEFGH12-01_x01_y01。每个单元(UnitID)都属于一个特定的批次(因此单元ID号对应于它所属的批次ID) 我有一个特定的算法,我在整个单元ID数据集上运行。我想根据具有相同的batchID值(因为每个批次下有许多唯一的单元)对单元进行分组,然后在这些单元批次的子集上运行该算法 我如何才

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

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

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


我如何才能做到这一点?

最简单的方法是使用pandas-groupping。 以下是一个例子:

创建数据:

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)

到目前为止,您可能希望共享您的代码和csv内容的示例,否则我们将对您的问题一无所知。您还应该显示从csv文件导入后数据框的显示方式,但这并没有告诉我有关唯一批次分组的任何信息。每个组都是uniqe批次,然后将您的函数应用于其他批次数据。您可以打印组名(或批)在循环@Azura中使用组名我的意思是有数百个相同的批ID,它们对应于唯一的单元ID。我想将每组单元ID分组到它们的批ID中。您需要提供示例数据,因为您会感到困惑,但请像sql表一样思考-您可以给出一个关于组的语句如果不使用这个froup,您可以按2列进行分组—这会对您有所帮助,但我无法了解您的需求,而且,当您在Stack Overflow中打开一个问题时,请尝试包括示例代码和输入数据,正如其他人已经提到的那样