Pandas 熊猫取代熊猫';t替换列';s值

Pandas 熊猫取代熊猫';t替换列';s值,pandas,replace,Pandas,Replace,斯塔克的来访者 我有一个数据集的切片,我希望用另一个值替换它的值。 例如: data\u train[data\u train.Fare

斯塔克的来访者

我有一个数据集的切片,我希望用另一个值替换它的值。 例如:

data\u train[data\u train.Fare<6][Fare']
显示此输出:

179    0.0000
263    0.0000
271    0.0000
277    0.0000
302    0.0000
378    4.0125
413    0.0000
466    0.0000
481    0.0000
597    0.0000
633    0.0000
674    0.0000
732    0.0000
806    0.0000
815    0.0000
822    0.0000
872    5.0000
此外,我使用
for
循环替换所有数据集中的0值。这个循环中的第一次迭代应该替换
数据序列
。但是,输出保持不变(仅0)

[数据列车,数据测试]中数据集的
:
如果数据集3中的“存活”,则下限为6
classes=dataset[dataset.Fare<下限]['Pclass'].unique()
我在课堂上:
数据集[dataset.Fare<下限].loc[dataset.Pclass==i][Fare'].replace(0.0000,四舍五入(dataset[dataset.Pclass==i][Fare'].mean(),4,inplace=True)
我试着重新分配被替换的系列,但效果不太好

dataset[dataset.Fare
也许我错过了什么,但我不知道到底是什么

更新

预期输出应如下所示:

179    84.1234
263    84.1234
271    84.1234
277    84.1234
302    84.1234
378    84.1234
413    84.1234
466    84.1234
481    84.1234
597    84.1234
633    84.1234
674    84.1234
732    84.1234
806    84.1234
815    84.1234
822    84.1234
872    84.1234
在哪里

round(数据集[dataset.Pclass==i][Fare'].mean(),4)==84.1234
注:平均值在不同的类别之间波动,但我已将平均值定义为一个常数进行了简化。

我相信您需要:

print (data_train)
        Fare  Pclass
179   2.5000       1
263   0.0000       1
271  30.0000       2
277  20.0000       2
302   0.0000       3
378   4.0125       3

out = []
for dataset in [data_train, data_test]:
    lower_margin = 6 if 'Survived' in dataset else 3
    
    #filters
    m1 = dataset.Fare < lower_margin
    m2 = dataset.Fare == 0
    
    #filtering DataFrame by treshold and aggregate mean
    avg = dataset[m1].groupby('Pclass')['Fare'].mean()
    #replaced only 0 values by mapped averages
    dataset.loc[m2, 'Fare'] = dataset.loc[m2, 'Pclass'].map(avg)
    out.append(dataset)
    
print (out[0])
        Fare  Pclass
179   2.5000       1
263   1.2500       1 <-correct replaced by mean
271  30.0000       2
277  20.0000       2
302   0.0000       3
378   4.0125       3
打印(数据列车)
票价等级
179   2.5000       1
263   0.0000       1
271  30.0000       2
277  20.0000       2
302   0.0000       3
378   4.0125       3
out=[]
对于[数据列车,数据测试]中的数据集:
如果数据集3中的“存活”,则下限为6
#过滤器
m1=数据集。票价<下限
m2=数据集。票价==0
#用treshold和聚合平均值过滤数据帧
平均值=数据集[m1]。分组依据('Pclass')['Fare'].mean()
#仅用映射平均值替换0个值
dataset.loc[m2,‘Fare']=dataset.loc[m2,‘Pclass'].map(平均值)
out.append(数据集)
打印(输出[0])
票价等级
179   2.5000       1

263 1.2500 1是否可以根据您的输入发布预期的输出?@Mayank Porwal done
'Series'对象是可变的,因此它们不能散列
出现在
数据集[m2,'Fare']=dataset.loc[m2,'Pclass'].map(avg)
行中。我试图只提取值,但另一个问题出现了,
'numpy.ndarray'对象不可调用
@JuiceFV-OOps,需要
dataset.loc[m2,'Fare']=dataset.loc[m2,'Pclass'].map(avg)