繁体   English   中英

将 Pandas 数据帧行拆分为搜索的列值到新的数据帧中

[英]Split pandas dataframe rows up to searched column value into new dataframes

我有一个包含多个标题行(多个 csv 的组合)的数据框。 有没有办法在不使用 .iloc 的情况下将数据帧拆分回单个数据帧? iloc 有效,但对我的工作流程来说会很耗时。

data = {'A':  [1,2,3,'A',4,5,6,'A',7,8,9],
        'B': [9,8,7,'B',6,5,4,'B',3,2,1]}
df = pd.DataFrame(data, columns = ['A','B'])

## My current approach:
df1 = df.iloc[:3,]
df2 = df.iloc[4:7,]
df3 = df.iloc[8:,]

是否有更好的方法通过搜索列中的值来拆分数据框? 即类似于df1,df2,df3 = df.split(df['A']=='A')

可以使用eq来检查标题行,然后在 cumsum 上使用 groupby:

header_rows = df.eq(df.columns).all(1)
dfs = {k:v for k,v in df[~header_rows].groupby(header_rows.cumsum())}

然后,例如dfs[0]给出:

   A  B
0  1  9
1  2  8
2  3  7

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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