使用 Pandas 转置 XLSX 并发送到数据库

问题描述 投票:0回答:1

我有一个以非正统方式构建的 xlsx 文件。简化后,它看起来像这样:

A B C D E F
1
2 会员ID 101 102 102 103
3 名字 保罗 约翰 乔治 林戈
4 姓氏 麦卡特尼 列侬 哈里森 斯塔尔

请注意,member_id 不是唯一的(这在原始数据中有意义)。

我的目标是拥有一张如下所示的表格:

会员ID 名字 姓氏
101 保罗 麦卡特尼
102 约翰 列侬
102 乔治 哈里森
103 林戈 斯塔尔

(注意member_id仍然不是唯一的)

所以我的方法是将这个表读入Python,转置它,然后将其写入数据库。

这是我到目前为止所拥有的:

import pandas as pd
import openpyxl
df = pd.read_excel('ingest_pzt/sample_inv.xlsx', sheet_name='data', engine='openpyxl', skiprows=[0])

这已经是一个糟糕的开始,因为 Pandas 似乎希望我的列是唯一的(请注意,这些列被称为“102”和“102.1”):

   Unnamed: 0  member_id        101     102     102.1    104

0         NaN  first_name       paul    john    george  ringo

1         NaN  last_name   mccartney  lennon  harrison  starr

如果我解决了member_id 的问题,我会删除空列:

df = df.drop(df.columns[[0]], axis='columns')

这会给我

    member_id        101     102     102.1    104

0   first_name       paul    john    george  ringo

1   last_name   mccartney  lennon  harrison  starr

然后我会像这样转置表格:

df = df.transpose()

                     0          1
member_id   first_name  last_name
101               paul  mccartney
102               john     lennon
102.1           george   harrison
104              ringo      starr

其中有一个奇怪的第一行曾经是索引,我似乎无法删除它。

非常感谢您的帮助!

python python-3.x pandas dataframe
1个回答
0
投票

创建一个新的 df2 并从第 2 行开始读取

© www.soinside.com 2019 - 2024. All rights reserved.