为了账号安全,请及时绑定邮箱和手机立即绑定

分割大熊猫数据框

分割大熊猫数据框

叮当猫咪 2019-11-28 10:57:54
我有423244行的大型数据框。我想将其拆分为4。我尝试了以下给出错误的代码?ValueError: array split does not result in an equal divisionfor item in np.split(df, 4):    print item如何将此数据帧分为4组?
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

我想做同样的事情,首先遇到拆分问题,然后遇到安装熊猫0.15.2的问题,所以我回到原来的版本,并编写了一个运行良好的小函数。希望对您有所帮助!


# input - df: a Dataframe, chunkSize: the chunk size

# output - a list of DataFrame

# purpose - splits the DataFrame into smaller of max size chunkSize (last is smaller)

def splitDataFrameIntoSmaller(df, chunkSize = 10000): 

    listOfDf = list()

    numberChunks = len(df) // chunkSize + 1

    for i in range(numberChunks):

        listOfDf.append(df[i*chunkSize:(i+1)*chunkSize])

    return listOfDf


查看完整回答
反对 回复 2019-11-28
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

请注意,这np.array_split(df, 3)会将数据帧拆分为3个子数据帧,而splitDataFrameIntoSmaller(df, chunkSize = 3)每chunkSize行将数据帧拆分一次。


例:


df = pd.DataFrame([1,2,3,4,5,6,7,8,9,10,11], columns=['TEST'])

df_split = np.array_split(df, 3)

您将获得3个子数据帧:


df_split[0] # 1, 2, 3, 4

df_split[1] # 5, 6, 7, 8

df_split[2] # 9, 10, 11

带有:


df_split2 = splitDataFrameIntoSmaller(df, chunkSize = 3)

您将获得4个子数据帧:


df_split2[0] # 1, 2, 3

df_split2[1] # 4, 5, 6

df_split2[2] # 7, 8, 9

df_split2[3] # 10, 11

希望我是对的,希望这是有用的。


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 556 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号