首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python -如何为字典创建一个更紧凑的组

python -如何为字典创建一个更紧凑的组
EN

Stack Overflow用户
提问于 2022-07-15 12:14:00
回答 1查看 33关注 0票数 0

嗨,我的生物项目代码的这一部分:

代码语言:javascript
复制
# choosing and loading the file:
df = pd.read_csv('Dafniyot_Data.csv',delimiter=',')
#grouping data by C/I groups:
CII = df[df['group'].str.contains('CII')]
CCI = df[df['group'].str.contains('CCI')]
CCC = df[df['group'].str.contains('CCC')]
III = df[df['group'].str.contains('III')]
CIC = df[df['group'].str.contains('CIC')]
ICC = df[df['group'].str.contains('ICC')]
IIC = df[df['group'].str.contains('IIC')]
ICI = df[df['group'].str.contains('ICI')]
#creating a dictonary of the groups:
dict = {'CII':CII, 'CCI':CCI, 'CCC':CCC,'III':III,'CIC':CIC,'ICC':ICC,'IIC':IIC,'ICI':ICI}

#T test
#FERTUNITY
#using ttest for checking FERTUNITY - grandmaternal(F0)
t_F0a = stats.ttest_ind(CCC['N_offspring'],ICC['N_offspring'],nan_policy='omit')
t_F0b = stats.ttest_ind(CCI['N_offspring'],ICI['N_offspring'],nan_policy='omit')
t_F0c = stats.ttest_ind(IIC['N_offspring'],CIC['N_offspring'],nan_policy='omit')
t_F0d = stats.ttest_ind(CCI['N_offspring'],III['N_offspring'],nan_policy='omit')
t_F0 = {'FERTUNITY - grandmaternal(F0)':[t_F0a,t_F0b,t_F0c,t_F0d]}

我需要多次重复ttest第6部分,要么更改组(CCC等),要么更改df(‘N_后代’,生存)中的行,这需要在项目中使用很多行。

我正试图找到一种方法,最终仍能得到每一组的字典:

代码语言:javascript
复制
t_F0 = {'FERTUNITY - grandmaternal(F0)':[t_F0a,t_F0b,t_F0c,t_F0d]}

因为它对我以后有用,但以一种较少重复的方式,用较少的线条

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 12:20:55

使用itertools.product生成所有键,使用dict理解生成值:

代码语言:javascript
复制
from itertools import product
keys = [''.join(items) for items in product("CI", repeat=3)]
the_dict = { key: df[df['group'].str.contains(key)] for key in keys }

类似地,您可以生成测试键的后半部分:

代码语言:javascript
复制
half_keys = [''.join(items) for items in product("CI", repeat=2)]
t_F0 = {
    'FERTUNITY - grandmaternal(F0)': [
        stats.ttest_ind(
            the_dict[f"C{half_key}"]['N_offspring'],
            the_dict[f"I{half_key}"]['N_offspring'],
            nan_policy='omit'
        ) for half_key in half_keys
    ],
}

顺便说一句,您不应该使用dict作为变量名:它已经有了意义( dict对象的类型)。

暂且不说,这涉及如何干涸创建词典这一字面问题。但是,请考虑克里斯在评论中所说的话;这可能是一个XY problem

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72993834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档