数据帧结构如下所示:
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]