python - 如何将数据帧的第一行读取为数据行而不是标题

标签 python python-3.x pandas dataframe

我正在尝试使用 Tabula-Py 读取 pdf 中的数据,但遇到一个小问题:

库读取数据如下:

  F 01/02/1994 01/12/1994 ac $123
0 M 01/03/1994 01/10/1992 ad $133
1 M 01/04/1994 01/09/1992 ae $133
2 M 01/05/1994 01/08/1992 aa $133

当我给它们列名时:问题是第一行在 Tabula-PDF 读取时自动被视为标题而不是数据,因此输出变为:

  Gender  D.O.B       D.O.P      Plan  Price
0 M      01/03/1994  01/10/1992  ad    $133
1 M      01/04/1994  01/09/1992  ae    $133
2 M      01/05/1994  01/08/1992  aa    $133

这是不正确的。它会删除第一行

所需的正确输出如下:

 Gender D.O.B       D.O.P      Plan Price
0 F     01/02/1994  01/12/1994 cc   $123
1 M     01/03/1994  01/10/1992 aa   $133
2 M     01/04/1994  01/09/1992 aa   $133
3 M     01/05/1994  01/08/1992 aa   $133

我正在使用的代码是:

def table_type_2(path):
    df = read_pdf(path,guess = True, multiple_tables=True)
    head = ['Gender', 'Date of Birth', 'Date of', 'Coverage', 'Gross Benefit']

    for i in range (0,len(df)):
        print(len(df[i]))
        dfnew.append(df[i])

    e = pd.DataFrame(dfnew[i],index=None)
    print(e)
    f = pd.DataFrame(e,columns=head)
    g = pd.DataFrame(data = e.values,columns=f.columns)
    print(g) 

有没有办法让我不会丢失第一行?

最佳答案

您可以调换数据帧和reset_index,使标题变成普通列。然后你可以转回:

def table_type_2(path):
    df = read_pdf(path,guess = True, multiple_tables=True)
    head = ['Gender', 'Date of Birth', 'Date of', 'Coverage', 'Gross Benefit']

    df = df.T.reset_index().T.reset_index(drop=True)

    df.columns = head 

    return df

关于python - 如何将数据帧的第一行读取为数据行而不是标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62131998/

相关文章:

python - 在python中从字符串创建变量

python - 将散点图分配到特定的箱中

python - 如何从不同列的行在数据框中创建新列?

python - django 表单将 css 添加到 ModelMultipleChoiceFIeld

python - 如何计算递归函数的时间?

python - 选择以特定索引值开头的 Pandas 数据框中的行

python - 小部件未显示在网格布局 (PySide) 上

python - 无法正确克隆 cStringIO 对象

python - pandas read_csv 列标题中带有井号

python - 如何处理 "inspect.getsource"的限制 - 或者如何仅获取函数的源代码?