我有以下数据框。
身份证 A B C
1 34353 917998 x
2 34973 980340 ×
3 87365 498097 x
4 98309 486547 x
5 87699 475132
6 52734 4298894
7 8749267 4918066 ×
8 89872 18103
9 589892 4818086 年
10 765 4063 岁
11 32369 418165 年
12 206 2918137
13 554 3918072
14 1029 1918051 x
15 2349243 4918064
对于每组空行,例如5,6 我想创建一个新的数据框。需要产生多个数据帧。如下所示:
编号 A B
5 87699 475132
6 52734 4298894
编号 A B
8 89872 18103
编号 A B
12 206 2918137
13 554 3918072
编号 A B
15 2349243 4918064
最佳答案
isnull = df.C.isnull()
partitions = (isnull != isnull.shift()).cumsum()
gb = df[isnull].groupby(partitions)
在这一点上,我们已经完成了为每个连续的
NaN
组创建一个单独的数据帧的目标。在 df
.它们可以通过 gb.get_group()
访问gb.groups
中每个键的方法为了验证,我们将连接显示。
keys = gb.groups.keys()
dfs = pd.concat([gb.get_group(g) for g in keys], keys=keys)
dfs
df
的设置我使用了@Alberto Garcia-Raboso 的读者
import io
import pandas as pd
# Create your sample dataframe
data = io.StringIO("""\
id A B C
1 34353 917998 x
2 34973 980340 x
3 87365 498097 x
4 98309 486547 x
5 87699 475132
6 52734 4298894
7 8749267 4918066 x
8 89872 18103
9 589892 4818086 y
10 765 4063 y
11 32369 418165 y
12 206 2918137
13 554 3918072
14 1029 1918051 x
15 2349243 4918064
""")
df = pd.read_csv(data, delim_whitespace=True)
关于python-2.7 - Pandas:根据空行拆分数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38316490/