jrj*_*rjc 4 python scipy pandas
我有一个这样的数据框:
1 2
0 P 214233
1 P 130435
2 P 258824
3 P 75488
4 C 101215
5 C 105793
6 C 101591
Run Code Online (Sandbox Code Playgroud)
例如,我想执行 Wilcoxon 秩和检验。为什么下面的命令不起作用?
import scipy.stats as ss
df.groupby(1).apply(ss.ranksums)
Run Code Online (Sandbox Code Playgroud)
我认为它不起作用,因为 scipy 无法识别该组:
TypeError: ranksums() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标?无需手动执行 groupby :
ss.ranksums(df[df[1]=="C"][2], df[df[1]=="P"][2])
Run Code Online (Sandbox Code Playgroud)
不知何故与方差分析相同的问题:
如果数据框是这样的:
1 2
0 P 214233
1 P 130435
2 A 258824
3 A 75488
4 A 101215
5 C 105793
6 C 101591
Run Code Online (Sandbox Code Playgroud)
但这里的错误是:
TypeError: can't multiply sequence by non-int of type 'str'
Run Code Online (Sandbox Code Playgroud)
谢谢
这有效。
values_per_group = [col for col_name, col in df.groupby(1)[2]]
ss.ranksums(*values_per_group)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3576 次 |
| 最近记录: |