Python If-statement "if something is in the row that is not 0, return..."



我有这个项目,我想分析我写了多少首诗。在一张excel表格中,我创建了三列。它们被称为"清洁诗","清洁附加诗";并"清理了额外的诗2"。如果我当天没有写一首诗或其他诗,则单元格中包含一个0。

我想写一个if子句,如果单元格中的值为0,返回一些东西,如果值不为0,则返回一些不同的东西,因此包含一首诗。

我之前的尝试是这样的(它不起作用,打印的列要么显示值&;day与两首诗&;或"NaN"。

    def poems_per_day(row):
if row ['cleaned poem'] == 0:
    return 'day without poem'
elif (row['cleaned poem'] is not None):
    return 'day with one poem'
if row ['cleaned additonal poem 1'] == 0:
    return 'day with one poem'
elif (row['cleaned additional poem 1'] is not None):
    return 'day with two poems'
if row ['cleaned additional poem 2'] == 0:
    return 'day with one poem'
elif (row['cleaned additional poem 1'] is not None):
    return 'day with two poems'

ifelif条件下,某些值可能不下降。由于您的目标只是检查单元格是否包含'0',也许您可以将所有elif语句替换为else

例如:

def poems_per_day(row):
    if str(row['cleaned poem']) == '0':
        return 'day without poem'
    else:
        return 'day with one poem'
    if str(row['cleaned additonal poem 1']) == '0':
        return 'day with one poem'
    else:
        return 'day with two poems'
    if str(row['cleaned additional poem 2']) == '0':
        return 'day with one poem'
    else:
        return 'day with two poems'

现在可以使用下面的语句:

def poems_per_day_if_stat (row):
    if str(row['cleaned additional poem 2']) != '0':
        return 'day with three poems'
    elif str(row['cleaned additional poem 1']) != '0':
        return 'day with two poems'
    elif str(row['cleaned poem']) != '0':
        return 'day with one poem'
    else : 
        return 'day without poem'

poetry['poems per day if-stat'] = poetry.apply(lambda row: poems_per_day_if_stat(row), axis = 1)

相关内容

最新更新