如何测试数据框最后一行中的特定值(使用-1)

How to test a specific value in last row of dataframe (using -1)

我有一个不断更新的数据框(一分钟一分钟),每分钟都会添加一个新行。我希望对特定列中数据框中的最后一个值进行条件测试。我一直在尝试使用 [-1:] 来指定最后一行和 ['columnname']。然而这returns一系列然后错误'The truth value of a Series is ambiguous...etc'。 如何引用特定列的最后一行中的值并有条件地对其进行测试?

    import pandas as pd
    data = {'D' : (1, 2, 3, 4, 5, 6),
            'O' : (4, 5, 3, 7, 9, 1),
            'OS' : (6, 1, 2, 0, 6, 4),
            'MAC' : (3, 6, 8, 6, 7, 9)}
    df = pd.DataFrame(data)

然后测试最后一行和 'MAC' 列:

    if df[-1:]['MAC'] == 9:
        print('OK - It works now!')

returns一个'ValueError: The truth value of a Series is ambiguous...' 我已经使用 at、iat、get_value、values、loc、iloc、index、 最简单的公式:

    df[-1:]['MAC']

returns一个系列(包括索引和实际值):

    5    9
    Name: MAC, dtype: int64

这当然是一个非常简单的问题...(就我而言)...谢谢

对于标量,可以将 Series 转换为 numpy 数组,并且 select 最后一个值:

if df['MAC'].values[-1:] == 9:
    print('OK - It works now!')

或 select 最后一行的 -1MAC 列位置的 Index.get_loc:

if df.iloc[-1, df.columns.get_loc('MAC')] == 9:
    print('OK - It works now!')

或 select 按 DataFrame.loc 的标签 - 但必须使用索引的最后一个值:

if df.loc[df.index[-1], 'MAC'] == 9:
    print('OK - It works now!')

使用iloc:

>>> df.iloc[-1]['MAC']
9