如何在Python中将数据帧值与数字进行比较?
我有一个数据框,其中有一列“Total Revenue”(总收入),数字用小数表示:如何在Python中将数据帧值与数字进行比较?,python,pandas,Python,Pandas,我有一个数据框,其中有一列“Total Revenue”(总收入),数字用小数表示: Total Revenue 0 100.96 1 48.694 我需要对这些数字进行取整,并让我的Python脚本执行一些逻辑,将这些数字与一些变量的值进行比较。生成dataframe后,我将使用以下代码对该列中的数字进行四舍五入: df['Total Revenue'] = df['Total Revenue'].round(0).astype(int) 我
Total Revenue
0 100.96
1 48.694
我需要对这些数字进行取整,并让我的Python脚本执行一些逻辑,将这些数字与一些变量的值进行比较。生成dataframe后,我将使用以下代码对该列中的数字进行四舍五入:
df['Total Revenue'] = df['Total Revenue'].round(0).astype(int)
我得到的结果是:
Total Revenue
0 101
1 49
但是,当我尝试执行以下操作以从数据帧中获取值并将其与数字进行比较时,我得到一个错误“ValueError:数据帧的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()
如果我跳过取整步骤,开始处理数据帧值,如下面的示例所示,我会得到一个错误“TypeError:需要浮点”
我做错了什么?通过这个
totalRevenue==101
,你本质上是在比较一个数据帧和一个值,因为总是返回一个数据帧,这个比较可以通过使用any()
或all()
来确定数据帧中的任何或所有值是否应该等于该值
你想做的事情是
if totalRevenue.values == 101:
print 'ok'
或
如果df['Total Revenue'].values[0]==101:print('ok')
df.ix[[0],'Revenue']==101
返回一个布尔数据帧(具有一列和一行),请尝试。如果您试图将其用作条件的一部分,这就像调用bool()
,返回您看到的错误。基本上,pandas
无法知道您期望数据帧的真实值是什么,因此您必须明确,例如使用all
、any
,等等。或者,在这种情况下,更改索引操作以直接返回值:df.ix[0,'Total Revenue']
totalRevenue = df.ix[[0], ['Total Revenue']]
totalRounded = math.ceil(totalRevenue * 1000.0) / 1000.0
if totalRevenue.values == 101:
print 'ok'
if any(totalRevenue == 101):
print 'ok'