循环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更改为150000,例如,将5555.2222222222更改为50000,因此,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)

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

如果你可以将你想要替换的值作为映射字典,你可以进行

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

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

y_new = y_var.replace(dict_replace)

最新更新