[英]Pandas DataFrame won't reindex and transpose, returns NaN
我正在從.csv的前9行讀取到DataFrame中,該行正常工作:
invoice_desc = pd.read_csv('path', sep=',', nrows = 9, header=None)
打印時,DataFrame如下所示:
0 1
0 Bill to /client/
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
現在,我需要挑選某些行,重新索引和轉置,以便可以通過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
我一直在這里閱讀有關Pandas索引和切片的信息,但我無法使其正常工作。 我究竟做錯了什么? 謝謝!
我認為您可以invoice_desc
loc
選擇invoice_desc
的子集,再按T
轉置,然后再按i
更改列。 DataFrame
通過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
,然后轉置:
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],:]
i = ['invoiceNum', 'issueDate', 'dueDate', 'invoiceSubtotal']
invoice_desc2.index = i
print invoice_desc2
0 1
invoiceNum Invoice number 3359680287
issueDate Issue date 31-Jan-2016
dueDate Due Date 01-Mar-2016
invoiceSubtotal Amount due 9,999,999.90
print invoice_desc2.T
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.