如何动态拆分Pandas DataFrame?基于Stream列的Arts行分割
动态拆分包含指定标记行的DataFrame
实现思路
定位所有Stream列值为Arts的行的位置索引,基于这些索引动态提取目标区间的行,无需手动指定切片范围。
具体代码实现
import pandas as pd data = {'Name': ['Ankit', 'Amit', 'Aishwarya', 'Priyanka','Kovacs','Tompos'], 'Age': [21, 19, 20, 18, 20, 19], 'Stream': ['Math', 'Commerce', 'Arts', 'Biology', 'Math', 'Arts'], 'Percentage': [88, 92, 95, 70, 80, 83]} df = pd.DataFrame(data, columns=['Name', 'Age', 'Stream', 'Percentage']) # 1. 获取所有Stream为Arts的行的位置索引 arts_indices = df[df['Stream'] == 'Arts'].index.tolist() # 2. 提取第一个Arts行之前的内容 first_part = df.iloc[0:arts_indices[0]] # 3. 提取相邻两个Arts行之间的内容 middle_parts = [] for i in range(len(arts_indices)-1): start_idx = arts_indices[i] + 1 end_idx = arts_indices[i+1] if start_idx < end_idx: middle_parts.append(df.iloc[start_idx:end_idx]) # 查看结果 print("第一个Arts行之前的DataFrame:") print(first_part) print("\n两个Arts行之间的DataFrame:") print(middle_parts[0])
代码说明
arts_indices自动收集所有Stream为Arts的行的索引,不受数据集大小、索引类型影响- 遍历
arts_indices动态计算相邻标记行的切片范围,适配任意数量的Arts标记行 - 若数据集中存在多组间隔的
Arts行,middle_parts会包含所有间隔区间的DataFrame
内容的提问来源于stack exchange,提问作者Lehel Tompos
相关产品推荐
相关产品推荐

