小编use*_*593的帖子

如果全部为零,则删除Pandas中的列

我目前有一个由1和0作为值的列组成的数据帧,我想迭代列并删除仅由0组成的列.这是我到目前为止所尝试的:

ones = []
zeros = []
for year in years:
    for i in range(0,599):
        if year[str(i)].values.any() == 1:
            ones.append(i)
        if year[str(i)].values.all() == 0:
            zeros.append(i)
    for j in ones:
        if j in zeros:
            zeros.remove(j)
    for q in zeros:
        del year[str(q)]
Run Code Online (Sandbox Code Playgroud)

在哪些年份是我正在分析的不同年份的数据框列表,其中包含列中包含一个的列,而零是包含全零的列的列表.有没有更好的方法根据条件删除列?出于某种原因,我必须检查那些列是否也在零列表中,并从零列表中删除它们以获得所有零列的列表.

python pandas

64
推荐指数
2
解决办法
5万
查看次数

迭代Dataframes Pandas列表

我目前有一系列18个DataFrames(每个代表不同的年份),由3列和不同数量的行组成,代表氨基酸残基位置的标准化互信息分数,如:

YEAR1

Pos1   Pos2   MI_Score
40     40     1.00    
40     44     0.53
40     70     0.23
44     44     1.00    
44     70     0.90
...
Run Code Online (Sandbox Code Playgroud)

我想迭代这个DataFrames列表并修剪相互信息得分小于0.50的行以及与自身配对的残差的互信息得分.这是我到目前为止所尝试的:

MIs = [MI_95,MI_96,MI_97,MI_98,MI_99,MI_00,MI_01,MI_02,MI_03,MI_04,MI_05,MI_06,MI_07,MI_08,MI_09,MI_10,MI_11,MI_12,MI_13] 
for MI in MIs:    
    p = []
    for q in range(0, len(MI)):
        if MI[0][q] != MI[1][q]:
            if MI[2][q] > 0.5:
                p.append([MI[0][q],MI[1][q],MI[2][q]])
    MI = pd.DataFrame(p) 
Run Code Online (Sandbox Code Playgroud)

然而,这仅仅是MI中的第一项.有人可以帮我找到一种方法来遍历整个列表并修剪每个数据帧吗?

谢谢

list pandas

4
推荐指数
1
解决办法
6091
查看次数

标签 统计

pandas ×2

list ×1

python ×1