Py学习  »  Python

Python更改列值-一次更改每一行

Smith • 4 年前 • 1981 次点击  

我有一个数据帧df,它有以下列

             A   B   C   D
06/09/2019   56 67  33  10
06/10/2019   54 66  47  23
06/11/2019   67 1   43  19
06/12/2019   21 38  8   71

我有两个数据帧,有下限(l)和上限(u)

下_df:

             l   
06/09/2019   20 
06/10/2019   12  
06/11/2019   10   
06/12/2019   15 

上_df:

             u 
06/09/2019   60
06/10/2019   70  
06/11/2019   55  
06/12/2019   50

我想使用两个数据帧(下_df和上_df)的值作为条件,将第一个数据帧(df)列的值更新为0。这里每一行都是孤立的,每一列都与相应的u&l价值观。小于l和大于u的值设置为零。

所需结果:

             A   B   C   D
06/09/2019   56  0  33  0
06/10/2019   54 66  47  23
06/11/2019   0  0   43  19
06/12/2019   21 38   0  0

我使用以下代码从dataframe中提取每一行,并将列与此上限和下限进行比较:

for i in range(0,len(df)):
  ul=upper_df.iloc[i]
  ll=lower_df.iloc[i]
  df.iloc[i][df.iloc[i]<ll[0]]=0
  df.iloc[i][df.iloc[i]>ul[0]]=0

但这并没有反映出任何变化,df仍保持原样。代码正确吗?如果没有,正确的方法是什么。这个数据集是巨大的(很多列,这是一个例子),我正在寻找一个更聪明的方法来做到这一点。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129906
文章 [ 3 ]  |  最新文章 4 年前