簡體   English   中英

熊貓:在數據框中存儲數據框

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM