基于一列中的值创建多个数据帧 (2),并在观察到另一个值时停止



数据帧结构如下所示:

Date   Amount1     Amount2     Amount3
NaN     Port        NaN        thing1
1/1/17     2         3           3
2/1/17     2         3           3  
2/1/17     2         3           3  
4/1/17     2         3           3  
5/1/17     2         3           3  
6/1/17     2         3           3  
7/1/17     2         3           3  
8/1/17     2         3           3 
9/1/17     2         3           3
10/1/17    2         3           3
11/1/17    2         3           3 
12/1/17    2         3           3      
NaN     Port        NaN        thing2
1/1/17     2         3           3
2/1/17     2         3           3  
2/1/17     2         3           3  
4/1/17     2         3           3  
5/1/17     2         3           3  
6/1/17     2         3           3  
7/1/17     2         3           3  
8/1/17     2         3           3 
9/1/17     2         3           3
10/1/17    2         3           3
11/1/17    2         3           3 
12/1/17    2         3           3  
Total     Nan        NaN        NaN
1/1/17     2         3           3
2/1/17     2         3           3  
2/1/17     2         3           3  
4/1/17     2         3           3  
5/1/17     2         3           3  
6/1/17     2         3           3  
7/1/17     2         3           3  
8/1/17     2         3           3 
9/1/17     2         3           3
10/1/17    2         3           3
11/1/17    2         3           3 
12/1/17    2         3           3  
NaN        Nan       Nan         Nan

我有兴趣创建 2 个数据帧。

1.一个数据帧在 amount3 列中观察到 thing2 后收集行,并在日期列中观察到总计之前停止该行。

2.第二个数据帧将在观察到总计后从行开始,并在观察到 NaN(空(值时停止。

你可以用idxmax.iloc

df1=df.loc[df.Amount3.eq('thing2').idxmax():df.Date.eq('Total').idxmax()-1].copy()
df2=df.loc[df.Date.eq('Total').idxmax():]
df2=df2.loc[:df2.Date.isnull().idxmax()-1]

最新更新