Python pandas 比较最后两行的值并执行操作
Python pandas Compare values of the last two rows and perform action
我有一个 pandas 系列,如图所示
我想比较最后两行“Total”和“SMA20”的值来执行一个操作。 (请注意 Pandas 数据框很大,我只粘贴最后一行)
myData = {'Date':[2022-01-17 15:27:00+05:30], 'total': [200],
'20SMA': [220]
}
我尝试通过以下操作将它们存储在两个单独的变量中
last_sma = myData['SMA20'].iloc[-1:]
last_total = myData['Total'].iloc[-1:]
然后尝试比较两者,
if last_sma > last_total:
print('SMA is large')
我收到以下错误。
Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
当我尝试查看变量内容时,其显示如下
日期
2022-01-17 15:27:00+05:30 215.155
名称:SMA20,数据类型:float64
其pandas系列
欢迎使用 Whosebug!
你制作切片的方式得到的是 pandas Series
last_sma = myData['SMA20'].iloc[-1:] # last_sma is a single value Series
last_total = myData['Total'].iloc[-1:] # last_total is a single value Series
myData['SMA20']
returns 一个 Series
保存来自列 SMA20
的数据,.iloc[-1:]
returns 这个 Series
,只有一条记录,但是 Series
。
将 2 个系列与 >
运算符 returns 另一个 Series
进行比较,保存每对记录的真假值进行比较。在你的情况下,它包含一个具有单个 true 或 false 值的系列。
如您收到的错误消息所述,尝试将布尔值 Series
折叠为单个布尔值的定义不明确 - 即使您的 Series
包含单个记录。
如果您只需要比较最后一个值,让代码正常工作的一种简单方法是删除切片中的 :
。
last_sma = myData['SMA20'].iloc[-1] # returns the single value at location -1
last_total = myData['Total'].iloc[-1] # returns the single value at location -1
if last_sma > last_total:
print('SMA is large') # should work now!
我有一个 pandas 系列,如图所示
我想比较最后两行“Total”和“SMA20”的值来执行一个操作。 (请注意 Pandas 数据框很大,我只粘贴最后一行)
myData = {'Date':[2022-01-17 15:27:00+05:30], 'total': [200],
'20SMA': [220]
}
我尝试通过以下操作将它们存储在两个单独的变量中
last_sma = myData['SMA20'].iloc[-1:]
last_total = myData['Total'].iloc[-1:]
然后尝试比较两者,
if last_sma > last_total:
print('SMA is large')
我收到以下错误。
Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
当我尝试查看变量内容时,其显示如下
日期 2022-01-17 15:27:00+05:30 215.155 名称:SMA20,数据类型:float64
其pandas系列
欢迎使用 Whosebug!
你制作切片的方式得到的是 pandas Series
last_sma = myData['SMA20'].iloc[-1:] # last_sma is a single value Series
last_total = myData['Total'].iloc[-1:] # last_total is a single value Series
myData['SMA20']
returns 一个 Series
保存来自列 SMA20
的数据,.iloc[-1:]
returns 这个 Series
,只有一条记录,但是 Series
。
将 2 个系列与 >
运算符 returns 另一个 Series
进行比较,保存每对记录的真假值进行比较。在你的情况下,它包含一个具有单个 true 或 false 值的系列。
如您收到的错误消息所述,尝试将布尔值 Series
折叠为单个布尔值的定义不明确 - 即使您的 Series
包含单个记录。
如果您只需要比较最后一个值,让代码正常工作的一种简单方法是删除切片中的 :
。
last_sma = myData['SMA20'].iloc[-1] # returns the single value at location -1
last_total = myData['Total'].iloc[-1] # returns the single value at location -1
if last_sma > last_total:
print('SMA is large') # should work now!