List 遍历数据帧列表

List 遍历数据帧列表,list,pandas,List,Pandas,我目前有一系列18个数据帧(每个数据帧代表不同的年份),由3列和不同数量的行组成,代表氨基酸残基位置的归一化互信息分数,如: 第一年 我希望遍历这个数据帧列表,并删除互信息分数小于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

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

第一年

我希望遍历这个数据帧列表,并删除互信息分数小于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) 
然而,这只是修剪MIs中的第一项。有人能帮我找到一种方法来遍历整个列表并修剪每个数据帧吗


谢谢

尽可能避免循环。与同时处理所有数据的“矢量化”方法相比,它们的速度要慢得多,而且通常不太容易读取。这里有一条路

In [17]: self_paired = df['Pos1'] == df['Pos2']

In [18]: low_MI = df['MI_Score'] < 0.50

In [19]: df[~(low_MI | self_paired)]
Out[19]:
   Pos1  Pos2  MI_Score
1    40    44      0.53
4    44    70      0.90

[2 rows x 3 columns]
[17]中的
self_paired=df['Pos1']==df['Pos2']
在[18]中:low_MI=df['MI_Score']<0.50
In[19]:df[~(low|MI | self|u paired)]
出[19]:
Pos1 Pos2米卢分数
1    40    44      0.53
4    44    70      0.90
[2行x 3列]
In [17]: self_paired = df['Pos1'] == df['Pos2']

In [18]: low_MI = df['MI_Score'] < 0.50

In [19]: df[~(low_MI | self_paired)]
Out[19]:
   Pos1  Pos2  MI_Score
1    40    44      0.53
4    44    70      0.90

[2 rows x 3 columns]