【问题标题】:How can split my dataframe into different dataframes? [duplicate]如何将我的数据框拆分为不同的数据框? [复制]
【发布时间】:2019-06-29 06:55:27
【问题描述】:

目前我有一个 PDF 文件的数据框转换为 CSV 文件格式,因此 PDF 由 4 页组成,并且全部包含在一个数据框中。

所以我的目标是按照page_num来划分数据框。

例如:

page_num  word_num    left    top  width  text
1          1           322     14   14     My
1          2           304     4    41     Name
1          3           322     5    9      is
1          4           316     14   20     Raghav
2          1           420     129  34     Problem 
2          2           420     31   27     just
2          3           420     159  27     got
2          4           431     2    38     complicated
3          1           322     14   14     #40
3          2           304     4    41     @gmail.com   
3          1           420     129  34     2019 
3          2           420     31   27     January

所以使用 pandas 库我想将我的数据帧(df)拆分为 3 个数据帧(df1、df2、df3)。

谢谢!

【问题讨论】:

  • pdf文档只有3页?
  • @jezrael, So the PDF consist of 4 pages.

标签: python pandas dataframe


【解决方案1】:

您可以将groupbyoperator.itemgetter 一起使用:

from operator import itemgetter
df1, df2, df3 = map(itemgetter(1), df.groupby('page_num'))

注意groupby 具有sort=True 默认情况下,因此您可以假设这将按'1''2''3' 的顺序过滤。

对于任意数量的数据帧,请参阅Splitting dataframe into multiple dataframeslistdict 在这种情况下更合适。

【讨论】:

    【解决方案2】:

    您可以使用loc 访问特定的行和/或列

    df1 = df.loc[df['page_num']  == 1]
    df2 = df.loc[df['page_num']  == 2]
    df3 = df.loc[df['page_num']  == 3]
    

    输出:

       page_num  word_num  left  top  width    text
    0         1         1   322   14     14      My
    1         1         2   302    4     41    Name
    2         1         3   322    5      9      is
    3         1         4   316   14     20  Raghav
       page_num  word_num  left  top  width         text
    4         2         1   420  129     34      Problem
    5         2         2   420   31     27         just
    6         2         3   420  159     27          got
    7         2         4   431    2     38  complicated
        page_num  word_num  left  top  width         text
    8          3         1   322   14     14          #40
    9          3         2   304    4     41   @gmail.com
    10         3         1   420  129     34         2019
    11         3         2   420   31     27      January
    

    https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 2015-11-14
      • 2023-04-09
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多