我在尝试使用 Dash (绘图)创建仪表板并使用 PyQt5 创建的 GUI 时遇到问题。
我尝试将以下示例代码作为模块并放在代码末尾:
import dash
import dash_core_components as dcc
import dash_html_components as html
def run_dash(data, layout):
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for Python.
'''),
dcc.Graph(
id='example-graph',
figure={
'data': data,
'layout': layout
}
)
])
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
但每次我收到错误can't find '__main__' module in ''
我知道最初,要创建 Dash,需要使用如下所示的主防护:
if __name__ == '__main__':
app.run_server(debug=True)
Run Code Online (Sandbox Code Playgroud)
但我的主窗口已经有了一个主防护,所以我不知道如何使两者一起工作。作为参考,这是我的 MainWindow 主防护:
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud) 我的部分代码Ranks通过将字符串name与另一列中的元素匹配来从列中提取元素Names:
rank = df.loc[df['Names'].str.contains(name), 'Ranks'].iloc[0]
除了name包含括号的少数情况外,代码按预期工作。
例如,它会导致错误name = Banana (1998)。
我知道 str.contains 可能不是这里最好的方法,但我环顾四周,似乎没有找到任何其他关于相同问题的帖子,所以我可以从那里开始工作。
df 的样本可以通过以下方式重现:
data = [['Apple', 10], ['Banana (1998)', 15], ['Banana (2000)', 14]]
df = pd.DataFrame(data, columns = ['Names', 'Ranks'])
我不知道str.split是否可以执行该过程.但是,例如,我在数据帧df中有以下列:
Column
0 a-b-c-d-e-f-g-h-i-j
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)
我知道,如果我这样做
df['Column'].str.split('-', expand=True)
Run Code Online (Sandbox Code Playgroud)
然后我将得到如下结果:
0 1 2 3 4 5 6 7 8 9
0 a b c d e f g h i j
1 a a b b c c None None None None
2 a a b b None None None None None None
Run Code Online (Sandbox Code Playgroud)
根据分割完成时元素的最大数量创建多个列.
我想知道是否可以总是有10列,无论元素的数量是多少,只要它在0到10之间,并在这里用'None'填充剩余的列.
所以会改变以下列:
Column
0 a-b-c-d-e-f-g-h
1 a-a-b-b-c-c
2 a-a-b-b
Run Code Online (Sandbox Code Playgroud)
成:
0 1 2 3 4 5 6 7 8 9
0 a b c …Run Code Online (Sandbox Code Playgroud)