将数据帧划分为数据帧字典



我有一个数据帧,其中包含信息块,它们之间有一行nan要分隔。我想获取我最初的大型数据帧并将其转换为数据帧字典,其中字典的元素是各个块。

例如 df:

0    1    2    3    4
x    s    a    g    g
q    r    w    l    p 
z    l    w    q    k
nan  nan  nan  nan  nan
k    u    l    p    a
m    1    l    9    0 
o    p    q    1    7

这个想法是获取此数据帧并创建一个具有两个(如果有更多"块"则为更多(数据帧的数据帧字典

DF1

0    1    2    3    4
x    s    a    g    g
q    r    w    l    p 
z    l    w    q    k

DF2

0    1    2    3    4
k    u    l    p    a
m    1    l    9    0 
o    p    q    1    7

你可以试试:

import more_itertools as mit
m = df.dropna(how='all')
l = [df.loc[i] for i in mit.consecutive_groups(m.index)]
print(l[0],'n',l[1])

0  1  2  3  4
0  x  s  a  g  g
1  q  r  w  l  p
2  z  l  w  q  k 
0  1  2  3  4
4  k  u  l  p  a
5  m  1  l  9  0
6  o  p  q  1  7

同样,对于字典,您可以使用:

import more_itertools as mit
m = df.dropna(how='all')
d = {f"df{e}":df.loc[i] for e,i in enumerate(mit.consecutive_groups(m.index))}
print(d['df0'],'nn',d['df1'])

0  1  2  3  4
0  x  s  a  g  g
1  q  r  w  l  p
2  z  l  w  q  k 
0  1  2  3  4
4  k  u  l  p  a
5  m  1  l  9  0
6  o  p  q  1  7

最新更新