每5行拆分一个数据帧

2024-10-05 14:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df:

df
====================================
|            COLUMN_Y              |
====================================
|            value1                |
|            value2                |
|            value3                |
|            value4                |
|            value5                |
|            value6                |
|            value7                |
|            value8                |
|            value9                |
|            value10               |
|            value11               |
|            value12               |
|            value13               |    
|            value14               |
|            value15               |
|            value16               |
====================================

我不想使用分组变量来拆分此数据帧。我想像这样将其拆分为多个数据帧,每5行拆分一次。例如,1002行数据帧将被拆分为200个5行数据帧和1个2行数据帧。我该怎么做

df1
====================================
|            COLUMN_Y              |
====================================
|            value1                |
|            value2                |
|            value3                |
|            value4                |
|            value5                |
====================================

 df2

====================================
|            COLUMN_Y              |
====================================
|            value6                |
|            value7                |
|            value8                |
|            value9                |
|            value10               |
====================================

df3
====================================
|            COLUMN_Y              |
====================================
|            value11               |
|            value12               |
|            value13               |
|            value14               |
|            value15               |
====================================

df4
====================================
|            COLUMN_Y              |
====================================
|            value16               |
====================================

Tags: 数据dfcolumnvalue1value2value3value4value11
3条回答

下面的代码将执行拆分,然后保存到不同的CSV:

split_size = 5
dfs = [df.loc[i:i+split_size-1,:] for i in range(0, len(df),split_size)]
for _, frame in enumerate(dfs):
    frame.to_csv('df'+str(_)+'.csv', index=False)

尝试list理解:

listofdataframes = [df.iloc[i:i + 5] for i in range(0, len(lst), 5)]

在索引上使用floor division创建组,然后我们可以使用DataFrame.groupby创建不同的数据帧:

grps = df.groupby(df.index // 5)

for _, dfg in grps:
    print(dfg)

  COLUMN_Y
0   value1
1   value2
2   value3
3   value4
4   value5 

  COLUMN_Y
5   value6
6   value7
7   value8
8   value9
9  value10 

   COLUMN_Y
10  value11
11  value12
12  value13
13  value14
14  value15 

   COLUMN_Y
15  value16 

相关问题 更多 >