Python 无法从float64对象中删除索引信息
我想根据情况对数据进行一些统计处理。但是我一直在下面的Python 无法从float64对象中删除索引信息,python,pandas,if-statement,logical-operators,Python,Pandas,If Statement,Logical Operators,我想根据情况对数据进行一些统计处理。但是我一直在下面的if语句阶段遇到这个错误,我认为这很可能是因为我无法访问float对象Q11中的值 ValueError:序列的真值不明确?使用a.empty、a.bool()、a.item()、a.any()或a.all() 我定义了一个流来获取一些信息 df_g=df.groupby("score") veni_vidi = [] for col in df.columns: if col=='patient': Q11
if语句
阶段遇到这个错误,我认为这很可能是因为我无法访问float对象Q11
中的值
ValueError:序列的真值不明确?使用a.empty、a.bool()、a.item()、a.any()或a.all()
我定义了一个流来获取一些信息
df_g=df.groupby("score")
veni_vidi = []
for col in df.columns:
if col=='patient':
Q11 = df_g[col].transform(lambda group: np.percentile(group, q=25))
Q11.reset_index(inplace=True,drop=True) #trying to drop index from here but it seems not working!
for val in df[col]:
if val < Q11: #This is giving error because of index I guess
veni_vidi.append('veni')
else:
veni_vidi.append('vici')
但不能解决问题
提前谢谢 我们可以使用
np.where
df_g=df.groupby("score")
veni_vidi = []
for col in df.columns:
if col=='patient':
Q11 = df_g[col].transform(lambda group: np.percentile(group, q=25))
for val in df[col]:
veni_vidi.append(np.where(val < Q11,'veni','vici'))
df_g=df.groupby(“分数”)
维尼维迪=[]
对于df.列中的列:
如果col==“患者”:
Q11=df_g[col].变换(λ组:np.百分位数(组,q=25))
对于df[col]中的val:
veni_vidi.append(名词短语,其中(val
我们可以使用np.where
df_g=df.groupby("score")
veni_vidi = []
for col in df.columns:
if col=='patient':
Q11 = df_g[col].transform(lambda group: np.percentile(group, q=25))
for val in df[col]:
veni_vidi.append(np.where(val < Q11,'veni','vici'))
df_g=df.groupby(“分数”)
维尼维迪=[]
对于df.列中的列:
如果col==“患者”:
Q11=df_g[col].变换(λ组:np.百分位数(组,q=25))
对于df[col]中的val:
veni_vidi.append(名词短语,其中(val
No,这是一个错误,因为Q11
是一个系列。242
小于整个系列意味着什么?但这似乎是一个X/Y问题?你需要实现什么样的操作?几乎可以肯定,有一种更好的方法可以删除循环,并使用更简洁的函数完成所需的操作。@ALollz242
只是一个数字,没有特殊意义。这只是定义问题的一个可重复的例子。@Alolz我试图将veni_vidi
添加到原始数据帧中,在此之前,我需要进行逻辑运算来定义它。为了解决问题,我需要保留循环。是的,我理解,但请重新阅读我写的内容。在抛出错误的那一行,您的语法val
实际上是在询问,数字242
是否比序列Q11
小。你不是在用数字来检验数字,你是在用一个数字来检验整个数列,并且期望一个真值。这是不明确的,如果它总是正确的,应该是正确的,还是至少正确一次?不,它给你一个错误,因为Q11
是一个系列。242
小于整个系列意味着什么?但这似乎是一个X/Y问题?你需要实现什么样的操作?几乎可以肯定,有一种更好的方法可以删除循环,并使用更简洁的函数完成所需的操作。@ALollz242
只是一个数字,没有特殊意义。这只是定义问题的一个可重复的例子。@Alolz我试图将veni_vidi
添加到原始数据帧中,在此之前,我需要进行逻辑运算来定义它。为了解决问题,我需要保留循环。是的,我理解,但请重新阅读我写的内容。在抛出错误的那一行,您的语法val
实际上是在询问,数字242
是否比序列Q11
小。你不是在用数字来检验数字,你是在用一个数字来检验整个数列,并且期望一个真值。这是不明确的,如果它总是正确的,那么它应该是正确的,还是至少正确一次?
df_g=df.groupby("score")
veni_vidi = []
for col in df.columns:
if col=='patient':
Q11 = df_g[col].transform(lambda group: np.percentile(group, q=25))
for val in df[col]:
veni_vidi.append(np.where(val < Q11,'veni','vici'))