更改列Pandas的值

时间:2018-01-18 17:36:01

标签: python pandas csv

我想在现有的 @HostListener('window:resize') onResize() { this.currentWindowWidth = window.innerWidth; } 列中添加items个值 我对f['ECPM_medio']进行了一些修改,使每个数字都有items values个值。问题是当我尝试将这些新数字添加到现有列时...我在所有行上粘贴相同的数字!

0.8 to 0.9

3 个答案:

答案 0 :(得分:4)

在我看来,你也可以这样做:

f.loc[:, 'ECPM_medio'] = (f['ECPM_medio'] * \
                          np.where(f['ECPM_medio'] <= 0.5, .8, .9)).round(2)

np.where(f['ECPM_medio'] <= 0.5, .8, .9)会返回一个数组,其中ECPM_medio列的长度为.8.9,具体取决于f [&#39; ECPM_medio&的相同索引值] #39]。然后,您可以将DataFrame列乘以此数组,并将整个表达式包装在括号中,以便您可以获取生成的Series(即已转换的f['ECPM_medio']列),并粘贴.round(2)以对列进行舍入& #39; s值到两个地方。

答案 1 :(得分:1)

您应该创建一个函数,然后将其应用于lambda。

示例:

def myfunc(item):
    item = float(item)
    if item <= 0.5:
        item = item * 0.8
    else:
        item = item * 0.9
    item = float("{0:.2f}".format(item))
    return item

f['ECPM_medio'] = f['ECPM_medio'].apply(lambda x: myfunc(x))

答案 2 :(得分:1)

您可以使用Pandas矢量化操作

来完成此操作
df['ECPM_medio'] = np.where(df['ECPM_medio'] <= 0.5, df['ECPM_medio'] * 0.8, df['ECPM_medio']* 0.9)