熊猫:在Dataframe中存储数据帧
我对Pandas颇为陌生,目前在尝试在Dataframe中插入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是我的大数据帧和信号1的每个条目和信号2指数是individuall数据帧。
我的想法是实现这个是这样的:
big_DataFrame['Signal 1'].loc['Name 1']
但是,这导致一个ValueError异常:
Incompatible indexer with DataFrame
是否可以在熊猫这种嵌套DataFrames?
尼科
的说,只有Series
可以是DataFrame
内。但是,通过DataFrames
似乎也可以。这里是一个的exaple假设没有列在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
如果嵌套dataframes都不能正常工作,你可以实现某种形式的指针,你存储在big_df
,允许您访问其他地方存储的信号数据帧。
相反的big_DataFrame['Signal 1'].loc['Name 1']
,你应该使用
big_DataFrame.loc['Name 1','Signal 1']
尽管这可能在语法上更加简洁,但它并不能避免问题。 – rbinnun
的 '指针' 在ns63sr's answer末提到可以实现为一类,比如..
定义:
class df_holder:
def __init__(self, df):
self.df = df
设置:
df.loc[0,'df_holder'] = df_holder(df)
得到:
df.loc[0].df_holder.df
你应该表现出你的初始数据... – IanS
你是什么意思与初使数据?现在我创建DataFrame并列出所有模拟列表,然后将每个模拟数据添加到另一个 –
为什么要在df中存储df?看看[熊猫小组](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Panel.html)。 – Parfait