Python 序列的真值是模糊的。。。从bioinfokit.analys运行tuckey_hsd时出错
我在尝试运行下面的代码时遇到此错误。我读了整个线程,但我仍然不知所措,不知道错误是从哪里来的 数据帧Python 序列的真值是模糊的。。。从bioinfokit.analys运行tuckey_hsd时出错,python,pandas,Python,Pandas,我在尝试运行下面的代码时遇到此错误。我读了整个线程,但我仍然不知所措,不知道错误是从哪里来的 数据帧 element id id_2 group condition level vol size height 0 C11 28 CTL11 cont control l1 18687.3750 0.190136 0.682789 1 C11 28 CTL11 cont control l2 16797.3750 0.1
element id id_2 group condition level vol size height
0 C11 28 CTL11 cont control l1 18687.3750 0.190136 0.682789
1 C11 28 CTL11 cont control l2 16797.3750 0.181322 0.829770
2 C11 28 CTL11 cont control l3 24813.0000 0.204907 0.812723
3 C12 29 CTL12 cont control l1 20069.4375 0.174686 0.719480
4 C12 29 CTL12 cont control l2 17323.8750 0.149539 0.836107
代码:
基于级别
列(l1、l2和l3)旋转后,我根据特定列之间的划分创建新列(例如vol
或size
)
代码一直运行到res=stat()
行(包括该行),并且仅在运行res.tukey\hsd
行时给出错误。我认为这个错误可能与分区操作有关,但我不确定如何克服这个问题
任何想法都欢迎
编辑:完全错误
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-3-f9bb6e4e7e5a> in <module>
42 res = stat()
43 res.tukey_hsd(df=rt, res_var='l1l3_size', xfac_var='group',
---> 44 anova_model=design)
45 # print stats outputs
46 print(anova_table)
/opt/anaconda3/envs/icvs/lib/python3.7/site-packages/bioinfokit/analys.py in tukey_hsd(self, df, res_var, xfac_var, anova_model, phalpha, ss_typ)
797 comp_pairs = [(ele1, ele2) for i, ele1 in enumerate(list(mult_group)) for ele2 in list(mult_group)[i + 1:]]
798 for p in comp_pairs:
--> 799 mean_diff = max(mult_group[p[0]], mult_group[p[1]]) - min(mult_group[p[0]], mult_group[p[1]])
800 # count for groups; this is useful when sample size not equal -- Tukey-Kramer
801 group1_count, group2_count = mult_group_count[p[0]], mult_group_count[p[1]]
/opt/anaconda3/envs/icvs/lib/python3.7/site-packages/pandas/core/generic.py in __nonzero__(self)
1441 def __nonzero__(self):
1442 raise ValueError(
-> 1443 f"The truth value of a {type(self).__name__} is ambiguous. "
1444 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
1445 )
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
42 res=stat()
43 res.tukey_hsd(df=rt,res_var='l1l3_size',xfac_var='group',
--->44方差分析(模型=设计)
45#打印统计数据输出
46打印(方差分析表)
/tukey_hsd中的opt/anaconda3/envs/icvs/lib/python3.7/site-packages/bioinfookit/analys.py(self、df、res_var、xfac_var、方差分析模型、phalpha、ss_typ)
797 comp_pairs=[(ele1,ele2)表示枚举中的i,ele1(列表(mult_组)),表示列表中的ele2(mult_组)[i+1:]
798对于成对的p:
-->799平均差异=最大值(多组[p[0]],多组[p[1]])-min(多组[p[0]],多组[p[1]])
800#分组计算;这在样本大小不相等时非常有用——Tukey Kramer
801组1计数,组2计数=多组计数[p[0]],多组计数[p[1]]
/opt/anaconda3/envs/icvs/lib/python3.7/site-packages/pandas/core/generic.py in\uuuuuuuuu nonzero\uuuuuuu(self)
1441定义非零(自):
1442升值错误(
->1443F“一个{type(self).{name}的真值是不明确的。”
1444“使用a.empty、a.bool()、a.item()、a.any()或a.all()
1445 )
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()。
问题是您正在将pandas.core.series.series
对象传递给max()
,请参见下文
In [1]: import pandas as pd
In [2]: max(pd.Series([1,2,3]), pd.Series([3,5,7]))
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-d0510caa4f61> in <module>
----> 1 max(pd.Series([1,2,3]), pd.Series([3,5,7]))
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/generic.py in __nonzero__(self)
1476
1477 def __nonzero__(self):
-> 1478 raise ValueError(
1479 f"The truth value of a {type(self).__name__} is ambiguous. "
1480 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
[1]中的:将熊猫作为pd导入
在[2]中:最大值(pd系列([1,2,3]),pd系列([3,5,7]))
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
---->最大值为1(局部放电系列([1,2,3]),局部放电系列([3,5,7]))
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pandas/core/generic.py in\uuuuuuuuuuuu非零(self)
1476
1477定义非零(自):
->1478升值错误(
1479F“一个{type(self)。{name}的真值是不明确的。”
1480“使用a.empty、a.bool()、a.item()、a.any()或a.all()
ValueError:序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()。
在第799行中,您将
mult\u group[p[0]]
传递到max()
,它来自mult\u group,mult\u group\u count,sample\u size\u r=analysis\u general.从df(df,xfac\u var,res\u var,'get\u dict')获取列表
其中df
是您的rt
数据帧。请从中签出,您可以确定您的rt
是否符合预期。问题在于数据透视操作后列的分层索引。数据透视后:
element id id_2 group condition vol size height
level l1 l2 l3 l1 l2 l3 l1 l2 l3
.....
扁平化索引解决了这个问题
结果数据帧:
element id id_2 group condition vol l1 vol l2 vol l3 size l1 size l2 etc.
您可以发布数据帧的片段吗?作为旁白,
rations=df1
不会复制原始数据帧。@BLimitless刚刚添加了数据帧的片段data@HenryEcker谢谢!我一直以为它会复制df,但显然你需要使用:new_df=df.copy()格式已关闭。谢谢你的帮助!
element id id_2 group condition vol size height
level l1 l2 l3 l1 l2 l3 l1 l2 l3
.....
rt.columns = [' '.join(col).strip() for col in rt.columns.values]
element id id_2 group condition vol l1 vol l2 vol l3 size l1 size l2 etc.