我想 迭 通过 熊猫系列.
如果列中的一个值 "可再生百分比 大于 中位数 对于 "可再生百分比 列,该值应分配给 1 在一个新的栏目中 'HighRenew'. 否则该值应保持不变。
新系列中每个项目的值 'HighRenew' 但我只是想修改一下,根据是否满足条件而改变。
for value in Reducedset['% Renewable']:
if value >= Reducedset['% Renewable'].median():
Reducedset['HighRenew'] = 1
else:
Reducedset['HighRenew'] = value
但是,我只想修改 特定值元素 当if循环满足条件时,在系列中而不是整个系列。
谁能给我一些建议?
IIUC你想创建一个新的列(或修改一个现有的列),从另一列中获取值,如果该值小于中位数,或如果该值大于或等于1。这可以简单地完成。
Reducedset['HighRenew'] = Reducedset['% Renewable']
Reducetset.loc[Reducedset['% Renewable'] < Reducedset['% Renewable'].median(), 'HighRenew'] = 1
或者你可以使用 np.where
来一次完成这个任务。
Reducedset['HighRenew'] = np.where(Reducedset['% Renewable'] >= Reducedset['% Renewable'].median(),
1, Reducedset['% Renewable'])
你可以用布尔变量来代替。
median_value = Reducedset['% Renewable'].median()
Reducedset['% Renewable'][Reducedset['% Renewable'] > median_value] = 1
你可以这样做
# The median can be calculated just once
median = Reducedset["% Renewable"].median()
for idx,row in Reducedset.iterrows():
value = row["% Renewable"]
if value >= median:
df.iloc[idx,"% Renewable"] = 1
# No need to re-assing the value if the condition is not met
我猜想 Reduceset
是你 pandas.dataframe
. 另外,我是在进入循环之前计算中位数,否则,每次循环里面的条件满足时,中位数都会变化。
希望能帮到你,让我知道你是怎么做的! :D