社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Smith • 4 年前 • 1789 次点击  

我有一个数据帧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 年前