在 pandas 面板中包含两个不同大小的数据框

Include two different sized data frames together in a pandas panel

我正在制作一个包含多个数据框的面板。每个都比较长。

我创建 dfs,在字典中组合,然后组合成面板;

for name in names: # large list of paths
    # Do some code to get data info (dI), dataframe (df) and nameID
    # Create a dictionary out of dfs by nameID
    dictDFs[nameID] = df 

# Collect all dataframes into one from dictionary dictDFs
pn = pd.Panel(dictDFs)

然后我创建一个 pickle 文件,pn.to_pickle(path)

我想将其他信息附加到不在数组中的数据框。我不想改变数据的大小或形状,保持数组唯一的整数。

我不能把它们打包成一个元组;面板不喜欢。然而,这是我认为它应该是这样的:

# Create a dictionary out of df and dI by nameID
dictDFs[nameID] = (df,dI)

谢谢

我能够解决这个问题。它的关键是将数据帧转换为元组并将元组用作字典键,这样面板键是不可变的:

for name in names: # List of names
    nm = base(name)[:-4]

    # Uses each name to extract, trim, cure, and make meaningful
    dfInfo,df = some_function(name)
    dfInfo = dfInfo.rename(index=str, columns={0: nm})

将元组转换为pandas.core.frame.Pandas的元组:

    tups = tuple(dfInfo.itertuples(index=False)) 

对于一列数据框的每个元组项,_fields 是相同的:

    nmT = tups[0]._fields[0]

根据元组数据框信息创建元组:

    dfInfo = (nmT, tuple(pd.Series(tup).loc[0] for tup in tups))

现在我们可以使用不可变元组用数据信息中的键创建一个字典:

    dictDFs[dfInfo] = df

# Collect all dataframes into one from dictionary dictDFs
pn = pd.Panel(dictDFs)
pn.to_pickle(path)