簡體   English   中英

Python中的DataFrame的DataFrame(Pandas)

[英]DataFrame of DataFrames in Python (Pandas)

這里的想法是,每年,我能夠創建三個數據框(df1,df2,df3),每個數據框包含不同的公司和股票價格('公司'和'價格'是df1~df3中的兩列)。 我想使用另一個數據幀(下面命名為“store”)來存儲每年的三個數據幀。

這是我的代碼:

store = pd.DataFrame(list(range(1967,2014)), columns=['year'])
for year in range(1967,2014):
    ....some codes that allow me to generate df1, df2 and df3 correctly...
    store.loc[store['year']==year, 'df1']=df1
    store.loc[store['year']==year, 'df2']=df2
    store.loc[store['year']==year, 'df3']=df3

我沒有收到錯誤警告或此代碼后的任何內容。 但在“商店”數據框中,列'df1','df2'和'df3'都是'NAN'值。

我認為大熊貓提供了更好的替代方案(你的建議如下)。

首先,有pandas.Panel數據結構,它適用於你在這里做的事情。

然而,正如Wes McKinney(熊貓作者)在他的“ 數據分析Python:與熊貓,NumPy和IPython的數據爭奪”一書中指出的那樣,多維指數在很大程度上提供了更好的選擇。

考慮以下代碼替代方法:

dfs = []
for year in range(1967,2014):
    ....some codes that allow me to generate df1, df2 and df3 
    df1['year'] = year
    df1['origin'] = 'df1'
    df2['year'] = year
    df2['origin'] = 'df2'
    df3['year'] = year
    df3['origin'] = 'df3'
    dfs.extend([df1, df2, df3])
df = pd.concat(dfs)

這為您提供了一個包含4列的DataFrame: 'firm''price''year''origin'

這使您可以靈活地:

  • 按照'year''origin'等級組織: df.set_index(['year', 'origin']) ,比如'origin''price'df.set_index(['origin', 'price'])

  • 根據不同的級別進行groupby

  • 通常,以許多不同的方式對數據進行切片和切塊。

你在這個問題中提出的建議使得一個維度(起源)任意地不同,並且很難想到它的優勢。 如果由於某些維度的分割是必要的,例如性能,您可以將DataFrames與標准Python數據結構更好地結合起來:

  • 每年將字典映射到具有其他三個維度的Dataframe。

  • 三個DataFrame,每個原點一個,每個都有三個維度。

暫無
暫無

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

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