Python 连接不满足条件的列

Python 连接不满足条件的列,python,loops,pandas,dataframe,Python,Loops,Pandas,Dataframe,我有以下建议: df1: A B C test1 1.06 4.0 6.00 test2 1.02 4.1 6.20 test3 1.07 0.9 6.10 test4 4.00 1.1 6.05 然后我将每行除以上一行,得到: df2:              A         B         C test1      NaN       NaN       NaN test2  0.962264

我有以下建议:

df1:
            A    B     C
test1     1.06  4.0  6.00
test2     1.02  4.1  6.20
test3     1.07  0.9  6.10
test4     4.00  1.1  6.05
然后我将每行除以上一行,得到:

df2:
             A         B         C
test1       NaN       NaN       NaN
test2  0.962264  1.025000  1.033333
test3  1.049020  0.219512  0.983871
test4  3.738318  1.222222  0.991803
我希望对于大于1.35(在
df2
中)或小于0.65的每个值,将
df1
的前几行乘以大于1.35或小于0.65的值

所需的输出如下所示:

             A         B         C
test1      3.96       0.87     6.00
test2      3.81       0.90     6.20
test3      4.00       0.90     6.10
test4      4.00       1.10     6.05
我编写的代码如下:

df_filtrado=pd.DataFrame()
for i in range(len(df2)):
    for j in range(len(list(df2.columns))):
        if df2.iloc[i,j]>1.35:
            values_higher=pd.concat([df1.iloc[0:i+1,[j]]*df2.iloc[i,j],df1.iloc[i+1:,[j]]])
            if df_filtrado.empty:
                df_filtrado= values_higher
            else:
                df_filtrado=pd.concat([df_filtrado,values_higher],axis=1, join_axes=[df_filtrado.index])
        elif df2.iloc[i,j]<0.65:
            values_lower=pd.concat([df1.iloc[0:i+1,[j]]*df2.iloc[i,j],df1.iloc[i+1:,[j]]])
            if df_filtrado.empty:
                df_filtrado= values_lower
            else:
                df_filtrado=pd.concat([df_filtrado,values_lower],axis=1, join_axes=[df_filtrado.index])

print df_filtrado
我无法添加任何值不高于1.35或低于0.65的列,如
df2
的C列

这是我尝试过的(将其添加到以前的代码中):

如何返回所需的输出???

我认为最简单的方法是在没有
NaN
值的情况下使用:

df = df_filtrado.combine_first(df1)
如果可能,一些
NaN
s:

mask = ((df2 < 0.65) | (df2 > 1.35)).any()
df = df1.loc[:, ~mask]
print (df)
          C
test1  6.00
test2  6.20
test3  6.10
test4  6.05

df = pd.concat([df_filtrado, df], axis=1)
print (df)
              B          A     C
test1  0.878049   3.962617  6.00
test2  0.900000   3.813084  6.20
test3  0.197561   4.000000  6.10
test4  1.100000  14.953271  6.05
mask=((df2<0.65)|(df2>1.35))。任何()
df=df1.loc[:,~mask]
打印(df)
C
测试16.00
测试2.6.20
测试36.10
测试4.6.05
df=pd.concat([df_filterado,df],轴=1)
打印(df)
B A C
测试1 0.878049 3.962617 6.00
测试2 0.900000 3.813084 6.20
测试3 0.197561 4.0000006.10
测试4 1.100000 14.953271 6.05
         A         B    B         A     C
test1  1.06  0.878049  4.0  3.962617  6.00
test2  1.02  0.900000  4.1  3.813084  6.20
test3  1.07  0.900000  0.9  4.000000  6.10
test4  4.00  1.100000  1.1  4.000000  6.05
df = df_filtrado.combine_first(df1)
mask = ((df2 < 0.65) | (df2 > 1.35)).any()
df = df1.loc[:, ~mask]
print (df)
          C
test1  6.00
test2  6.20
test3  6.10
test4  6.05

df = pd.concat([df_filtrado, df], axis=1)
print (df)
              B          A     C
test1  0.878049   3.962617  6.00
test2  0.900000   3.813084  6.20
test3  0.197561   4.000000  6.10
test4  1.100000  14.953271  6.05