我不明白为什么我的Python代码运行不正常

问题描述 投票:0回答:1

我不明白为什么当我使用“运行所有单元格”执行 Jupyter Notebook 中的代码时无法正确运行,但如果我使用 Ctrl+Enter 单独运行单元格,则一切正常。

真实例子:

df_m_dom['data/ora stato evento'] = pd.to_datetime(df_m_dom['data/ora stato evento'])
df_m_dom['data/ora stato evento'] = df_m_dom['data/ora stato evento'].dt.date
df_m_dom['data/ora stato evento'] = pd.to_datetime(df_m_dom['data/ora stato evento'])
df_m_dom['data/ora stato evento'] = df_m_dom['data/ora stato evento'].dt.strftime('%d/%m/%Y')
df_m_dom['data/ora stato evento'] = df_m_dom['data/ora stato evento'].astype(str)

df_m_dom['data/ora stato evento'] = pd.to_datetime(df_m_dom['data/ora stato evento'], errors='coerce')
df_filtrato_sett0 = df_m_dom[df_m_dom['data/ora stato evento'].between(inizio_settimana, fine_settimana)]

在“运行所有单元格”中,DataFrame df_filtrato_sett0 为空。但是,如果我单独重新运行单元格,它就会被填充。我不明白;我必须添加一个 for 循环并运行它三次才能使其工作。

这段代码也发生了同样的事情:

df_merged_sett_dom['Variazione_Percentuale'] = np.where((df_merged_sett_dom['Media_8sett'] != 0) | (df_merged_sett_dom['Media_8sett'] != -0),
                                         ((df_merged_sett_dom['Score_point_sett_corr'] - df_merged_sett_dom['Media_8sett']) / df_merged_sett_dom['Media_8sett'].abs()) * 100,
                                         df_merged_sett_dom['Score_point_sett_corr'] * 100)

df_merged_sett_dom['Variazione_Percentuale'] = df_merged_sett_dom['Variazione_Percentuale'].round(0)
df_merged_sett_dom['Media_8sett'] = df_merged_sett_dom['Media_8sett'].round(0)

一般来说,我不希望代码计算错误。看起来不像,但是有一个担忧。

python encoding jupyter
1个回答
0
投票

这很可能是由于你的jupyter笔记本中代码单元的顺序错误引起的。我想到有两件事你可以注意/检查:

确保修改 df_m_dom 和 df_merged_sett_dom 的单元格以正确的顺序执行。如果一个单元依赖于另一个单元的输出,则无序运行它们可能会导致意外的行为。

当您使用带有errors='coerce'的pd.to_datetime时,可能会导致无效日期的NaN值。确保后续操作可以正确处理 NaN 值。

如果您使用这些提示解决了您的问题,请告诉我,或者您可以在我的答案下发表评论,我将对其进行编辑以提供更多信息(如果可以的话)。

© www.soinside.com 2019 - 2024. All rights reserved.