我对Pandas相当陌生,当我尝试在Dataframe中插入一个Dataframe时,目前遇到了一个问题。
我想做的是:我有多个模拟和相应的信号文件,我希望它们都在一个大的DataFrame中。所以我想要一个DataFrame,它有我所有的模拟参数,也有我的信号作为嵌套的DataFrame。它应该是这样的:
SimName | Date | Parameter 1 | Parameter 2 | Signal 1 | Signal 2 |
Name 1 | 123 | XYZ | XYZ | DataFrame | DataFrame |
Name 2 | 456 | XYZ | XYZ | DataFrame | DataFrame |其中,SimName是我的大DataFrame索引,信号1和信号2中的每个条目都是一个个性化的DataFrame。
我的想法是这样实施:
big_DataFrame['Signal 1'].loc['Name 1']但是这导致了一个ValueError:
不兼容DataFrame索引器
在Pandas中可以使用这个嵌套的DataFrames吗?
尼科
发布于 2017-12-27 19:45:27
Ns63sr的回答末尾引用的‘指针’可以实现为一个类,例如.
定义:
class df_holder:
def __init__(self, df):
self.df = df集合:
df.loc[0,'df_holder'] = df_holder(df)得到:
df.loc[0].df_holder.df发布于 2017-10-09 14:20:51
文档说只有Series才能在DataFrame中。然而,传递DataFrames似乎也有效。下面是一个假设所有列都不在MultiIndex中的示例
import pandas as pd
signal_df = pd.DataFrame({'X': [1,2,3],
'Y': [10,20,30]} )
big_df = pd.DataFrame({'SimName': ['Name 1','Name 2'],
'Date ':[123 , 456 ],
'Parameter 1':['XYZ', 'XYZ'],
'Parameter 2':['XYZ', 'XYZ'],
'Signal 1':[signal_df, signal_df],
'Signal 2':[signal_df, signal_df]} )
big_df.loc[0,'Signal 1']
big_df.loc[0,'Signal 1'][X]这导致:
out1: X Y
0 1 10
1 2 20
2 3 30
out2: 0 1
1 2
2 3
Name: X, dtype: int64如果嵌套数据文件不能正常工作,您可以实现存储在big_df中的某种类型的指针,这些指针允许您访问存储在其他地方的信号数据。
发布于 2017-10-09 15:00:51
而不是big_DataFrame['Signal 1'].loc['Name 1'],您应该使用
big_DataFrame.loc['Name 1','Signal 1']https://stackoverflow.com/questions/46648167
复制相似问题