I want to split a Pandas DataFrame in chunks each time a value certain appears
Given the DataFrame:
Timestamp Value
Jan 1 12:32 11
Jan 1 12:50 10
Jan 1 13:01 11
Jan 1 16:05 10
Jan 1 11:05 09
Jan 1 16:10 11
Jan 1 16:22 10
I want to have a list with the following DataFrames
1 Timestamp Value
Jan 1 12:32 11
Jan 1 12:50 10
2 Timestamp Value
Jan 1 13:01 11
Jan 1 16:05 10
Jan 1 11:05 09
3 Timestamp Value
Jan 1 16:10 11
Jan 1 16:22 10
Every time the value 11 appears I want to split the DataFrame.
CodePudding user response:
np.split(tmp, np.where([tmp['Value'] == 11])[1][1:])
Results in
[ Timestamp Value
Jan 1 12:32 11
1 12:50 10,
Timestamp Value
Jan 1 13:01 11
1 16:05 10,
Timestamp Value
Jan 1 16:10 11
1 16:22 10]
CodePudding user response:
You can create a grouping Series that changes value each time 11 appears. Then use those groupings to create a list:
groups = df["Value"].eq(11).cumsum()
df_list = [g[1] for g in df.groupby(groups)]
print(df_list)
[ Timestamp Value
0 Jan 1 12:32 11
1 Jan 1 12:50 10,
Timestamp Value
2 Jan 1 13:01 11
3 Jan 1 16:05 10,
Timestamp Value
4 Jan 1 16:10 11
5 Jan 1 16:22 10]
