如何将元组元素作为新列迭代添加到数据框中?

问题描述 投票:0回答:1

我正在使用

statsmodels.stats.multitest.multipletests
功能

更正

p-values
我已存储在数据框中:

p_value_df = pd.DataFrame({"id": [123456, 456789], "p-value": [0.098, 0.05]})

for _, row in p_value_df.iterrows():
    p_value = row["p-value"]
    print(p_value)
    results = multi.multipletests(
        p_value,
        alpha=0.05,
        method="bonferroni",
        maxiter=1,
        is_sorted=False,
        returnsorted=False,
    )
    print(results)

看起来像:

我真的想将tuple

输出的每个元素添加为
p_value_df
中的新列,但我有点卡住了。

我尝试将结果转换为列表并使用

zip(*tuples_converted_to_list)

,但由于某些值是 
floats
,这会引发错误。

此外,我想拉动

array

 元素,以便 
array([False])
 就是 
False

任何人都可以就执行此操作的策略提出任何建议吗?

python pandas tuples zip statsmodels
1个回答
0
投票
我会使用

listcomp 制作多重测试列表,将其传递给 DataFrame

,然后用 p_value_df
 加入它:

import statsmodels.stats.multitest as multi def fn(pval): return multi.multipletests( pval, alpha=0.05, method="bonferroni", maxiter=1, is_sorted=False, returnsorted=False, ) l = [ [e[0] if isinstance(e, np.ndarray) and e.size == 1 else e for e in fn(pval)] for pval in p_value_df["p-value"] ] cols = ["reject", "pvals_corrected", "alphacSidak", "alphacBonf"] out = p_value_df.join(pd.DataFrame(l, columns=cols))
输出:

print(out) id p-value reject pvals_corrected alphacSidak alphacBonf 0 123456 0.098 False 0.098 0.05 0.05 1 456789 0.050 True 0.050 0.05 0.05
    
© www.soinside.com 2019 - 2024. All rights reserved.