【发布时间】:2021-03-16 21:37:04
【问题描述】:
所以 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)
【问题讨论】:
-
如果你知道索引,你可以使用
y_var['Value_col'][index] = 150000 -
@Orhan Solak 在我的例子中,索引是时间戳 2012-01-01 00:00:00 作为第一个索引行,而需要替换的列的值在 Value_col 中,因为它是时间戳和时间序列,所以我什至不能用 y_var['Value_col'] 来定位 col 名称。 KeyError:'Value_col'
-
我想我总是可以将整个系列恢复到 DataFrame 并替换值。但我认为它也应该可以直接在系列中使用