我有以下数据框:
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]
但我想用一段代码替换它,该代码考虑索引是否发生变化,适用于更大的数据帧和。有人可以帮我吗?
谢谢!
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]