在 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)
我正在制作一个包含多个数据框的面板。每个都比较长。
我创建 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)