簡體   English   中英

熊貓DataFrame不會重新索引和轉置,返回NaN

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM