python - 用python分割数据框
问题描述
我想做的很简单,用其他语言。我想拆分一个表,使用“for”循环每隔五行拆分一个数据帧。
这个想法是我有一个数据框,它每隔一段时间就会添加一个新行,比如用不同的问题回答一个表单,每个答案都被添加到一个特定的列,比如带有电子表格的谷歌表单。
我尝试过的是以下内容:
import pandas as pd
dp=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
df1=pd.DataFrame(data=dp)
for i in range(0, len(dp)):
if i%5==0:
df = df1.iloc[i,:]
print(df)
print(df)
我知道这并不多,但它仍然是一个尝试。现在,我不能做的是每次循环到达i mod 5 == 0
行时使用新数据框创建一个新变量。
解决方案
我认为您正在尝试使用已知数量的字段将平面列表转换为行和列。
我会做这样的事情:
import numpy as np
import pandas as pd
numFields = 3 # this is five in your case
fieldNames = ['color', 'animal', 'amphibian'] # totally optional
# this is your 'dp'
inputData = ['brown', 'dog','false','green', 'toad','true']
flatDataArray = np.asarray(inputData)
reshapedData = flatDataArray.reshape(-1, numFields)
df = pd.DataFrame(reshapedData, columns=fieldNames) # you only need 'columns' if you want to name fields
print(df)
这使:
color animal amphibian
0 brown dog false
1 green toad true
- 更新 -
从您上面的评论中,我看到您想要任意数量的数据帧 - 每个五行组一个。为什么不创建一个数据框列表(即你有dfs[0]
, dfs[1]
)?
# continuing with from where the previous code left off...
dfs = []
for group in reshapedData:
dfs.append(pd.DataFrame(group))
for df in dfs:
print(df)
打印:
0
0 brown
1 dog
2 false
0
0 green
1 toad
2 true
推荐阅读
- python - 在 matploltib 中何时使用 FancyArrow 以及何时使用 FancyArrowPatch?两者之间的主要区别是什么?
- powershell - 如何在任务计划程序中托管的 PowerShell 脚本中自动登录 Office-365
- java - Jetty 使用 AbstractHandler 进行异步处理
- docker - docker中的控制台应用程序不起作用
- flutter - 如何删除或更改flutter_bootstrap列之间的空间
- amazon-web-services - 用户注册后请求的页面遇到错误
- azure-maps - 如何在天蓝色地图中更改不同国家的背景颜色
- mysql - 我的 nodeJS express 后端工作,然后突然崩溃
- c# - 如何在 C# 中深度克隆包含 DynamicObject 的类?
- azure - 为什么直到循环提前结束?