【问题标题】:print a string if no null value is found如果没有找到空值,则打印一个字符串
【发布时间】:2021-10-12 14:50:38
【问题描述】:

我使用它找到列的第一个非值并且它工作正常

first_non = df['kst'].loc[df['kst'].first_valid_index()]
print(first_non)

当列中存在非空值时,此方法有效。但是,如果该列中不存在非空值,则会引发错误KeyError: None.

如何在 if else 语句中使用它?因此,如果存在非空值,我想打印它。如果没有,我想打印其他内容:

df = pd.read_excel('./test2.xlsx')
if (df['kst'].loc[df['kst'].first_valid_index()]):
    print (df['kst'].loc[df['kst'].first_valid_index()])
else:
    print('d')

目前,这会引发错误:

-->if (df['kst'].loc[df['kst'].first_valid_index()]):
...
KeyError: None

【问题讨论】:

  • 你能抓住 KeyError 吗?
  • if df['kst'].first_valid_index() is None:

标签: python pandas dataframe numpy keyerror


【解决方案1】:

你可以试试这个。

df = pd.read_excel('./test2.xlsx')
try:
    print (df['kst'].loc[df['kst'].first_valid_index()])
except:
    print('No value is found')

【讨论】:

    【解决方案2】:

    标准方式是try/catch,正如 Kenny 评论的那样:

    try:
       print(df['kst'].loc[df['kst'].first_valid_index()])
    except:
       print("no nan values")
    

    如果你坚持if/else,请先检查有效索引:

    valid_idx = df['kst'].first_valid_index()
    print(df.loc[valid_idx, 'kst'] if valid_idx is not None else "no nan values")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 2018-09-20
      • 2020-07-06
      相关资源
      最近更新 更多