Python 如果需要,可以对一系列值进行迭代以替换一个值

Python 如果需要,可以对一系列值进行迭代以替换一个值,python,pandas,loops,dataframe,series,Python,Pandas,Loops,Dataframe,Series,我正在尝试通过熊猫系列进行迭代 如果列'%Renewable'中的值大于'%Renewable'列的中值,则应在新列'HighRenewable'中将该值指定给1。否则,该值应保持原样 新系列中每个项目的值应根据是否满足条件而变化 for value in Reducedset['% Renewable']: if value >= Reducedset['% Renewable'].median(): Reducedset['HighRenew'] = 1

我正在尝试通过熊猫系列进行迭代

如果列'%Renewable'中的值大于'%Renewable'列的中值,则应在新列'HighRenewable'中将该值指定给1。否则,该值应保持原样

新系列中每个项目的值应根据是否满足条件而变化

for value in Reducedset['% Renewable']: 
    if value >= Reducedset['% Renewable'].median():
       Reducedset['HighRenew'] = 1 
    else:
       Reducedset['HighRenew'] = value       
但是,当if循环满足条件时,我只想修改序列中的特定值/元素,而不是整个序列


谁能给我一些建议吗

您可以使用布尔变量

median_value = Reducedset['% Renewable'].median()
Reducedset['% Renewable'][Reducedset['% Renewable'] > median_value] = 1

你可以这样做

#中位数只能计算一次
中位数=缩减集[%Renewable]。中位数()
对于idx,Reducedset.ItErrors()中的行:
值=行[“%可再生”]
如果值>=中值:
df.iloc[idx,“%Renewable”]=1
#如果不满足条件,则无需重新分配该值
我假设
Reduceset
是您的
pandas.dataframe
。此外,我在进入循环之前计算中值,否则,每次满足循环内的条件时,中值都会发生变化


希望这有帮助,让我知道进展如何!:D

IIUC如果要创建一个新列(或修改现有列),以从另一列中获取值(如果该值小于中间值),如果该值大于或等于,则为1。这可以简单地做到:

Reducedset['HighRenew'] = Reducedset['% Renewable']
Reducetset.loc[Reducedset['% Renewable'] < Reducedset['% Renewable'].median(), 'HighRenew'] = 1

Top15['HighRenew']=Top15['HighRenew']]。排序_值(升序=真)如果我尝试按这样的升序排序,然后查看序列:Top15['HighRenew'],它不会按升序出现吗?你知道为什么吗?Top15['HighRenew']=Top15['HighRenew']。排序_值(升序=真)如果我尝试按这样的升序排序,然后查看序列:Top15['HighRenew'],它不会按升序出现吗?你知道为什么吗?Top15['HighRenew']=Top15['HighRenew']。排序_值(升序=真)如果我尝试按这样的升序排序,然后查看序列:Top15['HighRenew'],它不会按升序出现吗?你知道为什么吗@EnriqueBeta您可以添加一些
数据帧的示例吗?所以我们可以看一看。不看,我的第一个想法是,可能与您要排序的列的
数据类型相关,可能您需要更改它。最好将其添加到您的帖子中。我在另一篇帖子中问了这个问题:
Reducedset['HighRenew'] = np.where(Reducedset['% Renewable'] >= Reducedset['% Renewable'].median(),
                                   1, Reducedset['% Renewable'])