簡體   English   中英

Pandas pivot_table使用給定的索引和列列表

[英]Pandas pivot_table using a given list of indices and columns

我想幫助弄清楚如何將pandas數據框轉換為具有給定索引和列列表的表(而不是pandas自動選擇索引和列的默認行為)。 如果這是微不足道的道歉。 我是python / pandas的新手。

考慮以下數據幀:

import pandas
import numpy as np
import datetime
data = {
'ticker' : np.array(['AAPL', 
               'AAPL',
               'IBM', 
               'XOM']), 
              'trade_date' : np.array([datetime.datetime(2015,01,01), 
                                    datetime.datetime(2015,04,02),
                                    datetime.datetime(2099,01,01), 
                                    datetime.datetime(2015,03,01)]), 
             'price' : np.array([10.0, 15.6, 20.9, 13.5])
  }
x = pandas.DataFrame(data)

在pivot_table上,

x.pivot_table(values = "price", index = "trade_date", columns = "ticker")

結果是:

ticker      AAPL   IBM   XOM
trade_date                  
2015-01-01  10.0   NaN   NaN
2015-03-01   NaN   NaN  13.5
2015-04-02  15.6   NaN   NaN
2099-01-01   NaN  20.9   NaN

但是,我想要的是:

ticker      A    AA  AAPL   IBM   XOM
trade_date                  
2015-01-01  NaN  NaN 10.0   NaN   NaN
2015-01-02  NaN  NaN NaN    NaN   NaN
2015-03-01  NaN  NaN NaN   NaN  13.5
2015-04-02  NaN  NaN 15.6   NaN   NaN
2099-01-01  NaN  NaN NaN  20.9   NaN

在pivot_table()中似乎沒有任何規定強制使用一組索引和列。

有這么快的方法嗎? 數據集相當大,有助於快速完成。

轉動我會重新索引:

In [11]: df = x.pivot_table(values = "price", index = "trade_date", columns = "ticker")

In [12]: df
Out[12]:
ticker      AAPL   IBM   XOM
trade_date
2015-01-01  10.0   NaN   NaN
2015-03-01   NaN   NaN  13.5
2015-04-02  15.6   NaN   NaN
2099-01-01   NaN  20.9   NaN

In [13]: df.reindex_axis(["A", "AA", "AAPL", "IBM", "XOM"], axis=1)
Out[13]:
ticker       A  AA  AAPL   IBM   XOM
trade_date
2015-01-01 NaN NaN  10.0   NaN   NaN
2015-03-01 NaN NaN   NaN   NaN  13.5
2015-04-02 NaN NaN  15.6   NaN   NaN
2099-01-01 NaN NaN   NaN  20.9   NaN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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