我目前有一个由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)
在哪些年份是我正在分析的不同年份的数据框列表,其中包含列中包含一个的列,而零是包含全零的列的列表.有没有更好的方法根据条件删除列?出于某种原因,我必须检查那些列是否也在零列表中,并从零列表中删除它们以获得所有零列的列表.
我目前有一系列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中的第一项.有人可以帮我找到一种方法来遍历整个列表并修剪每个数据帧吗?
谢谢