[英]Pandas: Storing Dataframe in Dataframe
我是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的索引,Signal 1和Signal 2中的每個條目都是單獨的DataFrame。
我的想法是這樣實現的:
big_DataFrame['Signal 1'].loc['Name 1']
但這會導致ValueError:
與DataFrame不兼容的索引器
是否有可能在Pandas中嵌套此DataFrame?
尼科
文檔說只有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
中的指針,以允許您訪問存儲在其他位置的信號數據幀。
您應該使用big_DataFrame['Signal 1'].loc['Name 1']
代替
big_DataFrame.loc['Name 1','Signal 1']
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.