Python 熊猫:如何基于系列模式进行分组
具有以下特征:Python 熊猫:如何基于系列模式进行分组,python,pandas,pandas-groupby,Python,Pandas,Pandas Groupby,具有以下特征: pd.DataFrame({'bool':[True,True,True, False,True,True,True], 'foo':[1,3,2,6,2,4,7]}) 其结果是: bool foo 0 True 1 1 True 3 2 True 2 3 False 6 4 True 2 5 True 4 6 True 7 如何将Trues分组为两组,以便在组1中有
pd.DataFrame({'bool':[True,True,True, False,True,True,True],
'foo':[1,3,2,6,2,4,7]})
其结果是:
bool foo
0 True 1
1 True 3
2 True 2
3 False 6
4 True 2
5 True 4
6 True 7
如何将Trues分组为两组,以便在组1中有索引[0:2],在组2中有索引[4:6]
所需输出:
第一组:
第2组:
4 True 2
5 True 4
6 True 7
谢谢大家! 你可以做:
将numpy作为np导入
x=df[df[bool]]索引值
组=np.splitx,其中np.diffx>1[0]+1
df_groups=[df.iloc[gr,:]表示组中的gr]
输出如下所示:
df_组[0]
出[56]:
布尔福
0对1
1对3
2正确的2
df_组[1]
出[57]:
布尔福
4正确的2
5对4
6对7
下面是一个简单的方法:
# Split the dataframe by `Series` using `cumsum`
g =(~data['bool']).cumsum().where(data['bool'])
dfs= {'group_'+str(i+1):v for i, (k, v) in enumerate(data[['foo']].groupby(g))}
您可以使用键“group_uu”+stri+1(如group_1、group_2等)访问每个数据帧:
您也可以发布所需的输出吗?@anky_91,我已经发布了所需的输出,正如您所要求的,谢谢
# Split the dataframe by `Series` using `cumsum`
g =(~data['bool']).cumsum().where(data['bool'])
dfs= {'group_'+str(i+1):v for i, (k, v) in enumerate(data[['foo']].groupby(g))}
print(dfs['group_1'])
foo
0 1
1 3
2 2