如何测试数据帧最后一行中的特定值(使用-1)
Posted
技术标签:
【中文标题】如何测试数据帧最后一行中的特定值(使用-1)【英文标题】:How to test a specific value in last row of dataframe (using -1) 【发布时间】:2020-03-18 13:58:43 【问题描述】:我有一个不断更新的数据框(一分钟一分钟),每分钟添加一个新行。我希望对特定列中数据框中的最后一个值进行条件测试。我一直在尝试使用 [-1:] 来指定最后一行和 ['columnname']。但是,这会返回一个系列,然后返回错误“系列的真值不明确......等等”。 如何引用特定列的最后一行中的值并进行条件测试?
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!')
返回一个'ValueError:一个系列的真值是不明确的......' 我尝试了许多使用 at、iat、get_value、values、loc、iloc、index 的公式, 最简单的公式:
df[-1:]['MAC']
返回一个系列(包括索引和实际值):
5 9
Name: MAC, dtype: int64
当然,这是一个简单得愚蠢的问题...(就我而言)...谢谢
【问题讨论】:
【参考方案1】:使用iloc:
>>> df.iloc[-1]['MAC']
9
【讨论】:
我认为这似乎是个好主意,但如果检查this 总是最好避免在熊猫中使用][
【参考方案2】:
对于标量,可以将 Series 转换为 numpy 数组并选择最后一个值:
if df['MAC'].values[-1:] == 9:
print('OK - It works now!')
或按位置选择,-1
表示最后一行,Index.get_loc
表示列的位置MAC
:
if df.iloc[-1, df.columns.get_loc('MAC')] == 9:
print('OK - It works now!')
或者按标签选择DataFrame.loc
- 但必须使用索引的最后一个值:
if df.loc[df.index[-1], 'MAC'] == 9:
print('OK - It works now!')
【讨论】:
以上是关于如何测试数据帧最后一行中的特定值(使用-1)的主要内容,如果未能解决你的问题,请参考以下文章