【问题标题】:Python panda dataframe Assign NaN if couldn't locate index如果找不到索引,Python熊猫数据框分配NaN
【发布时间】:2020-03-04 12:37:59
【问题描述】:

我正在阅读完整索引和列名的值。如果数据框中不存在给定的索引或列名,我想分配 NaN 值。

ktm_bc = emiss.loc['Ktm']['CO']

这里的“emiss”是一个数据框。 如果数据框中不存在索引“ktm”或“CO”,我正在尝试将 NaN 值分配给 ktm_bc。

ktm_all_bc = [ ]

for i in range(10):

 emiss=pd.read_excel('emission_data_for_py.xlsx',sectors[i],header=1,index_col=0)
 ktm_bc = emiss.loc['Ktm']['CO']
 ktm_all_bc = ktm_all_bc.append(ktm_bc)

如果 'emiss' 中不存在 ['Ktm'] 或 ['CO'] 则显示值错误 因此,我想在未找到索引或列名时分配 NaN 值以继续循环。

【问题讨论】:

  • 您的代码中有错误:例如emiss.loc['Ktm']['CO']ktm_all_bc.append(ktm_bc)
  • 错误出现在emiss.loc['Ktm']['CO']'ktm' 索引在 Emiss 中不存在。因此,它可以将 NaN 值分配给ktm_bc,而不是显示错误

标签: python-3.x


【解决方案1】:

我认为这样做可以:

ktm_bc  = np.nan
if 'Ktm' in emiss.index:
    ktm_bc = emiss.loc['Ktm']

其他索引的代码相同。另见hier

【讨论】:

  • 我正在寻找相同的答案,谢谢。在这里,我使用了您对索引和列名的建议。
【解决方案2】:

以上建议可用于索引和列同时使用'and'

ktm_bc = np.nan if 'Ktm' in emiss.index and 'CO' in emiss.columns: ktm_bc = emiss.loc['Ktm']['CO']

【讨论】:

    猜你喜欢
    • 2017-11-03
    • 2021-08-07
    • 2022-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2021-07-24
    • 2018-07-17
    相关资源
    最近更新 更多