python - 迭代 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)
解决方案
井系列根据定义是单变量的,因此在这种情况下,列的概念没有多大意义。
如果您可以将要替换的值作为映射字典,则可以执行
dict_replace = {
5444.11111111111: 150000,
5555.2222222222: 50000
}
y_var.replace(dict_replace, inplace=True)
如果您不想更改原始变量,则可以不使用inplace
标志:
y_new = y_var.replace(dict_replace)
推荐阅读
- android - 一个安卓应用在google play第一次提交后,需要多长时间才能出现在google play store?
- scala - 如何从scala中的文本文件中提取每个单词
- c# - 我遇到了错误 CS1513 的问题:} 预期
- php - Twilio 通话连接问题
- php - 下拉菜单不显示在导航栏 Laravel 6.0 中
- javascript - 在javascript中启用复选框的点击事件
- java - 从 Spring Boot 集成测试运行原始应用程序
- java - 如何从动作侦听器运行具有多个线程的方法
- postgresql - 为什么 PostgreSQL 为当前正在执行的命令的文本保留固定数量的内存?
- react-native - 无法访问 SD 卡(ExternalStorageDirectoryPath 指向 /storage/emulated/0)