c# 两个panel的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 两个panel的问题相关的知识,希望对你有一定的参考价值。

我要实现的是form上有两个按钮,有一个区域为panel区,有两个panel。当点按钮1时,panel区域显示panel1,panel2隐藏;当点按钮2时,panel区域显示panel2,panel1隐藏。(两个panel区域一般大小)。 可是现在是: 当点按钮1时,panel区域显示panel1,panel2隐藏;当点按钮2时,panel1与panel2全部隐藏。 我知道是把panel2放在panel1里了 可是怎么不把他们放在一起呢?大小还一般大。

参考技术A 选中panel1然后打开“文档大纲”,在“视图”→“其他窗口”中,然后拖动panel2使其和panel1平级就行了。 参考技术B //splitContainer1.Panel1放你的Panel1,2就放panel2
//form.Load事件中
this.splitContainer1.Panel2Collapsed
=
true;
//button1.click事件中
this.splitContainer1.Panel1Collapsed
=
false;
this.splitContainer1.Panel2Collapsed
=
true;
//button2.click...
this.splitContainer1.Panel2Collapsed
=
false;
this.splitContainer1.Panel1Collapsed
=
true;
不可以分三个,但你可以在splitcontainer里嵌套splitcontainer
不过这样会让控制起来麻烦点

将两个 pandas 数据帧组合成一个数据帧“dict type cell”(pd.Panel 已弃用)

【中文标题】将两个 pandas 数据帧组合成一个数据帧“dict type cell”(pd.Panel 已弃用)【英文标题】:combine two pandas dataframe into one dataframe "dict type cell" (pd.Panel deprecated) 【发布时间】:2018-03-17 10:31:50 【问题描述】:

我正在尝试将多个 pandas.DataFrame 保存在一个集合中的 mongodb 中,所有数据帧都有相同的索引/列,我想将它保存在一个文档中,使用 to_json() 方法.将数据框的所有单元格作为字典,这可能是一个好方法。为了实现这一点,我想像这样连接数据框:

df1:                
 index   A      B
 1     'A1'   'B1'
 2     'A2'   'B2'
 3     'A3'   'B3'

df2:
 index  A      B
 1    'a1'   'b1'
 2    'a2'   'b2'
 3    'a3'   'b3'

预期的解决方案:

df_sol:
 index    A                    B
 1        d1:'A1', d2:'a1'   d1:'B1', d2:'b1'
 2        d1:'A2', d2:'a2'   d1:'B2', d2:'b2'
 3        d1:'A3', d2:'a3'   d1:'B3', d2:'b3'

我使用的方法是

pd.Panel(dict(d1=df1, d2=df2)).apply(pd.Series.to_dict, 0)

                              A                         B
index                                                    
1      'd1': 'A1', 'd2': 'a1'  'd1': 'B1', 'd2': 'b1'
2      'd1': 'A2', 'd2': 'a2'  'd1': 'B2', 'd2': 'b2'
3      'd1': 'A3', 'd2': 'a3'  'd1': 'B3', 'd2': 'b3'

但是pd.Panel 已弃用DeprecationWarning : Panel is deprecated and will be removed in a future version.它有一个只使用pandas 的解决方法吗? 谢谢!

Original Question

【问题讨论】:

【参考方案1】:

这是一个完全不同的概念,我很喜欢。


您可以创建dict 的子类,我们将添加定义为字典合并。

from cytoolz.dicttoolz import merge

class mdict(dict):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def __add__(self, other):
        return(mdict(merge(self, other)))


df1.applymap(lambda x: mdict(d1=x)) + df2.applymap(lambda x: mdict(d2=x))

                                  A                             B
index                                                            
1      'd1': ''A1'', 'd2': ''a1''  'd1': ''B1'', 'd2': ''b1''
2      'd1': ''A2'', 'd2': ''a2''  'd1': ''B2'', 'd2': ''b2''
3      'd1': ''A3'', 'd2': ''a3''  'd1': ''B3'', 'd2': ''b3''

【讨论】:

【参考方案2】:

解决方案pd.concat + 其他东西

pd.Series(
    pd.concat([df1, df2], axis=1, keys=['d1', 'd2']).stack().to_dict('index')
).unstack()

                              A                             B
1  'd1': ''A1'', 'd2': ''a1''  'd1': ''B1'', 'd2': ''b1''
2  'd1': ''A2'', 'd2': ''a2''  'd1': ''B2'', 'd2': ''b2''
3  'd1': ''A3'', 'd2': ''a3''  'd1': ''B3'', 'd2': ''b3''

说明 我想将[1, 2, 3]['A', 'B'] 放入索引并将['d1', 'd2'] 作为列。

我从pd.concat开始

pd.concat([df1, df2], axis=1, keys=['d1', 'd2'])

         d1          d2      
          A     B     A     B
index                        
1      'A1'  'B1'  'a1'  'b1'
2      'A2'  'B2'  'a2'  'b2'
3      'A3'  'B3'  'a3'  'b3'

这几乎让我到达那里。如果我用stack 跟随它,它会将列的最后一级放到索引的最后一级:

pd.concat([df1, df2], axis=1, keys=['d1', 'd2']).stack()

           d1    d2
index              
1     A  'A1'  'a1'
      B  'B1'  'b1'
2     A  'A2'  'a2'
      B  'B2'  'b2'
3     A  'A3'  'a3'
      B  'B3'  'b3'

这就是我想要的。从这里我可以使用.to_dict('index')

pd.concat([df1, df2], axis=1, keys=['d1', 'd2']).stack().to_dict('index')

(1, 'A'): 'd1': "'A1'", 'd2': "'a1'",
 (1, 'B'): 'd1': "'B1'", 'd2': "'b1'",
 (2, 'A'): 'd1': "'A2'", 'd2': "'a2'",
 (2, 'B'): 'd1': "'B2'", 'd2': "'b2'",
 (3, 'A'): 'd1': "'A3'", 'd2': "'a3'",
 (3, 'B'): 'd1': "'B3'", 'd2': "'b3'"

并将其传递回pd.Series 构造函数以获取一系列字典。

pd.Series(
    pd.concat([df1, df2], axis=1, keys=['d1', 'd2']).stack().to_dict('index')
)

1  A    'd1': ''A1'', 'd2': ''a1''
   B    'd1': ''B1'', 'd2': ''b1''
2  A    'd1': ''A2'', 'd2': ''a2''
   B    'd1': ''B2'', 'd2': ''b2''
3  A    'd1': ''A3'', 'd2': ''a3''
   B    'd1': ''B3'', 'd2': ''b3''
dtype: object

剩下要做的就是unstack,我在上面的解决方案中展示了它。

【讨论】:

在第一个选项中,第二个操作(groupby)丢失了正确的索引,有没有办法修复它? 从那时起我一直在编辑。我相信我现在拥有的东西是优越的。

以上是关于c# 两个panel的问题的主要内容,如果未能解决你的问题,请参考以下文章

c# 两个panel的问题

c# 两个panel

只显示一个 div.panel,而不是两个

C#控制切换显示两个Panel内容

小数运算需要注意什么? 接口和抽象类 WinForm窗体上两个panel,怎么实现一个panel固定漂浮在另一个panel之上

winform中 splitcointaer 有两个panel 如果一个panel隐藏掉 另外一个panel 怎么可以自动覆盖整个窗体