首页 > 解决方案 > 迭代 Pandas 系列并替换给定列的浮点值

问题描述

所以 Date 是一个设置为索引的时间戳,而 Value_col 是我想将前 6 个索引更改为与现在不同的值的列。

这是 CSV 文件包含的信息:

Date,Value_col
2012-01-01,5444.11111111111
2012-02-01,5555.2222222222
2012-03-01,3333.9629629629
2012-04-01,6666.5714285715
2012-05-01,7777.8965517242
2012-06-01,8888.3703703703
2012-07-01,9999.0

代码:

import pandas as pd 
  

y_var = pd.read_csv('name.csv')
y_var = y_var.set_index('Date')
y_var = y_var.squeeze()

输出数据类型:

for i,e in enumerate(y.iteritems()):
    print(i,e)

系列类型:

0 (Timestamp('2012-01-01 00:00:00', freq='MS'), 5444.11111111111)
1 (Timestamp('2012-02-01 00:00:00', freq='MS'), 5555.2222222222)
2 (Timestamp('2012-03-01 00:00:00', freq='MS'), 3333.9629629629)
3 (Timestamp('2012-04-01 00:00:00', freq='MS'), 6666.5714285715)
4 (Timestamp('2012-05-01 00:00:00', freq='MS'), 7777.8965517242)
5 (Timestamp('2012-06-01 00:00:00', freq='MS'), 8888.3703703703)
6 (Timestamp('2012-07-01 00:00:00', freq='MS'), 9999.0)

想法是将 5444.11111111111 更改为 150 000 例如,将 5555.2222222222 更改为 50 000,因此,应更改 Value_col 的每一行。

我试过但系列似乎不接受这种类型的转换

for i,e in enumerate(y_var.iteritems()):
    print(i,e)
    if 5444.11111111111 == e:
        y_var['Value_col'] = y['Value_col'].float.replace(5444.11111111111,1)

标签: pythonpandasdatetime

解决方案


井系列根据定义是单变量的,因此在这种情况下,列的概念没有多大意义。

如果您可以将要替换的值作为映射字典,则可以执行

dict_replace = {
    5444.11111111111: 150000,
    5555.2222222222: 50000
}
y_var.replace(dict_replace, inplace=True)

如果您不想更改原始变量,则可以不使用inplace标志:

y_new = y_var.replace(dict_replace)

推荐阅读