【问题标题】:Find sum and percentage of column in python (Pandas) from a pdf从pdf中查找python(Pandas)中列的总和和百分比
【发布时间】:2020-11-10 18:49:05
【问题描述】:

我想解析 PDF 中的数据,然后找到数据的总和和百分比: 我的代码如下所示:

import camelot 
import re
import pandas as pd
tables = camelot.read_pdf('result.pdf', pages="17")
marks = tables[0].df.iloc[[3,6,9,12,15,18,21,24,27,30],3:12]
print(marks)
marks.to_csv('sample.csv')

我想删除 btw ( ) 中的重复内容,以便只保留数字:

3       4       5       6       7       8       9      10      11
3    52(B)  78(A+)  76(A+)  56(B+)   73(A)   74(A)  83(A+)  78(A+)   90(O)
6   40(P)*  58(B+)   52(B)   45(C)  57(B+)  55(B+)  83(A+)  82(A+)   90(O)
9   59(B+)  40(P)*  63(B+)  59(B+)  64(B+)   65(A)   91(O)  82(A+)  85(A+)
12  64(B+)   54(B)  78(A+)   42(P)   72(A)   73(A)  83(A+)  85(A+)  75(A+)
15   67(A)   44(P)       A   53(B)   65(A)  64(B+)  83(A+)  84(A+)  75(A+)
18  61(B+)   53(B)  64(B+)   42(P)   65(A)   49(C)  81(A+)  82(A+)   90(O)
21   44(P)   46(C)   68(A)  40(P)*   49(C)   51(B)  83(A+)  82(A+)  75(A+)
24   69(A)  77(A+)  76(A+)  62(B+)   71(A)  64(B+)  85(A+)  84(A+)  100(O)
27  78(A+)  78(A+)  83(A+)  76(A+)  79(A+)   69(A)  85(A+)  82(A+)   90(O)
30  87(A+)  84(A+)   90(O)   71(A)  82(A+)  81(A+)  87(A+)  84(A+)   95(O)

那么在求和之后我应该怎么做才能找到百分比呢?

【问题讨论】:

  • 您能否更具体地了解百分比?换句话说,预期的输出是什么,例如前 2、3 个值?
  • 所有值,不包括 ( ) 和内部内容。百分比将是列总和除以总行数

标签: python json pandas parsing


【解决方案1】:

DataFrame.apply 每列使用DataFrame.replaceto_numeric

df = df.replace('\D+', '', regex=True).apply(pd.to_numeric, errors='coerce')
print (df)
     3   4     5   6   7   8   9  10   11
3   52  78  76.0  56  73  74  83  78   90
6   40  58  52.0  45  57  55  83  82   90
9   59  40  63.0  59  64  65  91  82   85
12  64  54  78.0  42  72  73  83  85   75
15  67  44   NaN  53  65  64  83  84   75
18  61  53  64.0  42  65  49  81  82   90
21  44  46  68.0  40  49  51  83  82   75
24  69  77  76.0  62  71  64  85  84  100
27  78  78  83.0  76  79  69  85  82   90
30  87  84  90.0  71  82  81  87  84   95

如果只删除()的内容:

df = df.replace('(\(.*\))', '', regex=True)
print (df)
      3    4   5    6   7   8   9  10   11
3    52   78  76   56  73  74  83  78   90
6   40*   58  52   45  57  55  83  82   90
9    59  40*  63   59  64  65  91  82   85
12   64   54  78   42  72  73  83  85   75
15   67   44   A   53  65  64  83  84   75
18   61   53  64   42  65  49  81  82   90
21   44   46  68  40*  49  51  83  82   75
24   69   77  76   62  71  64  85  84  100
27   78   78  83   76  79  69  85  82   90
30   87   84  90   71  82  81  87  84   95

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多