我有 Dataframe births
:
| | 年份|性别|出生人数|出生总数|
| - -|- -|- -|- -|- -|
| 一个|小行星1880|米|小行星110491|小行星2014|
| 三个|小行星1881|米|小行星100743|小行星192696|
| 五个|小行星1882|米|小行星113686|小行星221533|
| 七个|小行星1883|米|小行星104627|小行星216946|
| 九个|小行星1884|米|小行星114442|小行星243462|
| 十一|小行星1885|米|小行星107799|小行星240854|
| 十三个|小行星1886|米|小行星110784|小行星255|
| 十五个|小行星1887|米|小行星101413|小行星247394|
| 十七岁|小行星1888|米|小行星120851|小行星2994|
| 十九个|小行星1889|米|小行星110580|小行星288946|
我想使用scipy中的binomtest进行测试,并将p值添加到一个新列:
(births
.assign(binom_pvalue=lambda x: stats.binomtest(x.num_births, x.total_births).pvalue)
)
但我得到的错误是TypeError: k must be an integer.
看起来我传递的是整个序列,而不是每行的值。但是,此方法在执行以下操作时有效:
(num_births
.assign(ratio=lambda x: x.num_births / x.total_births)
)
输出:
| | 年份|性别|出生人数|出生总数|比值|
| - -|- -|- -|- -|- -|- -|
| 一个|小行星1880|米|小行星110491|小行星2014| 0.548386单位|
| 三个|小行星1881|米|小行星100743|小行星192696| 0.522808单位|
| 五个|小行星1882|米|小行星113686|小行星221533| 0.513179美元|
| 七个|小行星1883|米|小行星104627|小行星216946| 0.482272个单位|
| 九个|小行星1884|米|小行星114442|小行星243462| 0.470061单位|
在此方案中,它以矢量化方式使用每行的值。
我如何使用binomtest函数,使用我在上面尝试的相同风格?
感谢您的回答!
威廉
1条答案
按热度按时间kgqe7b3p1#
您可以使用
lambda
和assign
来尝试执行此操作:以下是输出: