python - 如何根据列中具有相同值的行对行进行分组,然后在每个子集上运行我的代码?
问题描述
我有一个 csv 文件,它是通过一些代码行创建的,其中包括以下内容:
'BatchID' 列,格式为 DEFGH12-01,指定每个单元所在的批次,以及单元列及其完整 ID 号,'UnitID',格式为 DEFGH12-01_x01_y01。每个单元 (UnitID) 都属于特定批次(因此单元 ID 号对应于它所在的 BatchID。
我有一个特定的算法,我一直在整个单元 ID 数据集上运行。我想根据具有相同的 batchID 值对单元进行分组(因为每个批次中有许多独特的单元),然后在这些单元批次的每个子集上运行算法。
我怎样才能做到这一点?
解决方案
最简单的方法是使用 pandas 分组。这是一个例子:
创建数据:
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)
推荐阅读
- matlab - 检测带有部分边缘的圆(用于微载体上的细胞生长的 MATLAB)
- acumatica - 使用 PXDatabase SelectMulti 进行表连接
- javascript - 需要通过 props 传递效果或从 preact/react 中的根组件外部强制组件重新加载
- amazon-web-services - 如何使用 IAM 从 EC2 连接到 AWS Elasticsearch?
- c# - 我试图简单地将两种不同的数据类型附加到我的 xml 文件中并再次读取它们,但出现错误
- excel - Vba for loop to repeat code output for cell rage
- javascript - 是否可以将表单输入设置为 0px 高度?
- python - Dask 数据帧计算失败
- javascript - 一个简单的 selectionSort 但无休止地运行
- javascript - 如何添加 2 个 SQL 结果对象并将其发送到单个 JSON 文件