动态分割数据框

问题描述 投票:0回答:1

我有以下数据框:

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'])


    Name    Age Stream  Percentage
0   Ankit   21  Math    88
1   Amit    19  Commerce    92
2   Aishwarya   20  Arts    95
3   Priyanka    18  Biology 70
4   Kovacs  20  Math    80
5   Tompos  19  Arts    83

我想按照以下方式根据 Stream 列中包含 Arts 的行拆分数据框:包含 Arts 的两行之间的行形成一个单独的数据框。

我的代码如下:

first=df.iloc[0:2]
second=df.iloc[3:5]

但我想用一段代码替换它,该代码考虑索引是否发生变化,适用于更大的数据帧和。有人可以帮我吗?

谢谢!

dataframe dynamic split bigdata
1个回答
1
投票

使用

eq
cumsum
设置石斑鱼,然后使用
groupby
进行分割:

dfs = [g for _, g in df.groupby(df.loc[::-1, 'Stream'].eq('Arts').cumsum(),
                                sort=False)]

输出:

[        Name  Age    Stream  Percentage
 0      Ankit   21      Math          88
 1       Amit   19  Commerce          92
 2  Aishwarya   20      Arts          95,
        Name  Age   Stream  Percentage
 3  Priyanka   18  Biology          70
 4    Kovacs   20     Math          80
 5    Tompos   19     Arts          83]
© www.soinside.com 2019 - 2024. All rights reserved.