Pandas DataFrame不会重新索引和转置,返回NaN

2024-09-28 22:19:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将.csv中的前9行读入数据帧,该数据帧工作正常:

invoice_desc = pd.read_csv('path', sep=',', nrows = 9, header=None)

打印时,数据框如下所示:

^{pr2}$

我现在需要找出某些行,重新索引并转置,这样我就可以通过to_sql()将其插入MySQL数据库:

i = ['invoiceNum', 'issueDate', 'dueDate', 'invoiceSubtotal']
invoice_desc2 = pd.DataFrame(invoice_desc.loc[[2, 3, 4, 8],], index = i)
invoice_desc2.transpose()

print invoice_desc2

但是,这段代码会重新编制索引,但不会保留值,并在打印时生成以下输出:

                   0    1
invoiceNum       NaN  NaN
issueDate        NaN  NaN
dueDate          NaN  NaN
invoiceSubtotal  NaN  NaN

我一直在读熊猫索引和切片here,但我就是不能让它工作。我做错什么了?谢谢!在


Tags: csv数据pathreadinvoicenandescsep
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:51

我想您可以先用^{}选择invoice_desc的子集,然后用^{}来转置它,然后用i来改变列。不需要由pd.DataFrame创建新的DataFrame。在

print invoice_desc
                  0                    1
0           Bill to             \tclient
1        Billing ID  xxxx-xxxx-xxxx-xxxx
2    Invoice number           3359680287
3        Issue date          31-Jan-2016
4          Due Date          01-Mar-2016
5          Currency                 CURR
6  Invoice subtotal         9,999,999.90
7          VAT (0%)                 0.00
8        Amount due         9,999,999.90

invoice_desc2 = invoice_desc.loc[[2, 3, 4, 8],:]
invoice_desc2 = invoice_desc2.T
print invoice_desc2
                2            3            4             8
0  Invoice number   Issue date     Due Date    Amount due
1      3359680287  31-Jan-2016  01-Mar-2016  9,999,999.90

i = ['invoiceNum', 'issueDate', 'dueDate', 'invoiceSubtotal']
invoice_desc2.columns = i
print invoice_desc2
       invoiceNum    issueDate      dueDate invoiceSubtotal
0  Invoice number   Issue date     Due Date      Amount due
1      3359680287  31-Jan-2016  01-Mar-2016    9,999,999.90

或者先用i设置index,然后转置:

^{pr2}$

相关问题 更多 >