【问题标题】:Splitting a Dataframe as per a set of row indices根据一组行索引拆分数据框
【发布时间】:2021-01-10 21:27:32
【问题描述】:

我是 Python 新手,我的要求是找到一个干净的代码,用于根据一组行索引将数据帧拆分为不同的数据帧。

Dataframe Module1 有超过一百万行。需要按照以下从0开始的索引号进行拆分。

Int64Index([55893, 122056, 180227, 234314], dtype='int64')

即第一个溢出的数据帧应该是 0 到 55892,下一个从 55893 到 122055 等等。

这是我的代码,问题在于从 234314 到末尾的最后一个数据帧。我不确定如何循环实现它。

  start=0
  Module=[]
  for ele in indexing:
      Module.append(Module1[start:ele])
      start=ele
  Module.append(Module1[start:])
  print(Module)

但是,我想为这段代码找到一个更简洁的解决方案。

【问题讨论】:

    标签: python python-3.x pandas dataframe indexing


    【解决方案1】:

    您可以使用 iloc 和循环,因为 iloc 它将数据帧拆分为所需长度的子数据帧。循环中的预期行为应该是这样的:

    step = 55893
    
    df_1 = Module1.iloc[:step, :]
    df_2 = Module1.iloc[step:(step*2), :]
    df_3 = Module1.iloc[(step*2):(step*3), :]
    ...
    df_n = Module1.iloc[(step*(n-1)):(step*n), :]
    

    P.S:请查看 numpy's split 了解替代方案。

    【讨论】:

    • 非常感谢您的帮助。 :)
    猜你喜欢
    • 2018-08-14
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多