简体   繁体   中英

How can I split dataframe with blank spaces

import pandas
import numpy

names = ['a', 'b', 'c']
df = pandas.DataFrame([1, 2, 3, numpy.nan, numpy.nan, 4, 5, 6, numpy.nan, numpy.nan, 7, 8, 9])

For the above one, how will the condition change? Can someone please explain? how can I get this,

df1 = 
     0
0  1.0
1  2.0
2  3.0
df2 =
     0
4  4.0
5  5.0
6  6.0
df3 = 
      0
8   7.0
9   8.0
10  9.0

You can generate a temporary column, remove NaNs, and group by the temporary column:

dataframes = {f'df{idx+1}': d for idx, (_, d) in enumerate(df.dropna().groupby(df.assign(cond=df.isna().cumsum()).dropna()['cond']))}

Output:

>>> dataframes
{'df1':      0
 0  1.0
 1  2.0
 2  3.0,
 'df2':      0
 5  4.0
 6  5.0
 7  6.0,
 'df3':       0
 10  7.0
 11  8.0
 12  9.0}
 
>>> dataframes['df1']
     0
0  1.0
1  2.0
2  3.0

>>> dataframes['df2']
     0
5  4.0
6  5.0
7  6.0

>>> dataframes['df3']
      0
10  7.0
11  8.0
12  9.0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM