python中fillna函数_在pandas dataframe中写一个用户定义的fillna函数,用条件填充np.nan不同的值...
考虑以下pandas数据帧:
import pandas as pd
change = [0.475, 0.625, 0.1, 0.2, -0.1, -0.75, 0.1, -0.1, 0.2, -0.2]
position = [1.0, 1.0, nan, nan, nan, -1.0, nan, nan, nan, nan]
date = ['20150101', '20150102', '20150103', '20150104', '20150105', '20150106', '20150107', '20150108', '20150109', '20150110']
pd.DataFrame({'date': date, 'position': position, 'change': change})
输出
date change position
20150101 0.475 1
20150102 0.625 1
20150103 0.1 np.nan
20150104 0.2 np.nan
20150105 -0.1 np.nan
20150106 -0.75 -1
20150107 0.1 np.nan
20150108 -0.1 np.nan
20150109 0.2 np.nan
20150110 -0.2 np.nan
我想用以下规则填写:
>对于“位置”值为np.nan的行,如果“change”的值与position的最后一个非null值具有相同的符号(change * position> 0,例如0.1 * 1和0.2 * 1> 0 ),我们用最后一个非空值填充.
>对于“位置”值为np.nan的行,如果“change”的值与position的最后一个非null值相同的符号(change * position< = 0,如-1 * 0.1),我们fillna 0.
>一旦np.nan填充为0,则以下np.nan也将填充0.
以下是样本数据框的预期结果:
date change position
20150101 0.475 1
20150102 0.625 1
20150103 0.1 1
20150104 0.2 1
20150105 -0.1 0
20150106 -0.75 -1
20150107 0.1 0
20150108 -0.1 0
20150109 0.2 0
20150110 -0.2 0
编辑:
我开发的方法如下:
while(any(np.isnan(x['position']))):
conditions = [(np.isnan(x['position'])) & (x['position'].shift(1) * x['change'] > 0),
(np.isnan(x['position'])) & (x['position'].shift(1) * x['change'] <= 0)]
choices = [x['position'].shift(1), 0]
x['position'] = np.select(conditions, choices, default=x['position'])
但正如你所看到的,它不是很令人满意,而且如果你有80,000,000行数据则非常慢.
有什么建议?谢谢您的帮助!
python中fillna函数_在pandas dataframe中写一个用户定义的fillna函数,用条件填充np.nan不同的值...相关推荐
- python提取数列数字_从pandas datafram中的列中提取字符串中的数字
只要字符串Incorrect_Price保持您在示例中呈现的结构(数字不是用文字表示的),任务就可以相对容易地解决.在 使用正则表达式,您可以使用similar SO question中的方法提取数字 ...
- python中convert函数用法_Python Pandas DataFrame.tz_convert用法及代码示例
Pandas DataFrame是带有标签轴(行和列)的二维大小可变的,可能是异构的表格数据结构.算术运算在行和列标签上对齐.可以将其视为Series对象的dict-like容器.这是 Pandas ...
- python交换两列的位置_如何更改 pandas dataframe 中两列的位置
如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...
- pandas dataframe 中 explode()函数用法及效果
最近在使用pyspark处理数据,需要连接各种各样的表和字段,因此记录相关函数的使用情况.今天介绍explode(). 1. explode()函数简介 explode 函数是 pan ...
- pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe)
pandas使用iteritems函数迭代地查看dataframe中的每个数据列(iterate over each column of a dataframe) 目录 pandas使用iterite ...
- pandas使用replace函数替换dataframe中的值:replace函数使用正则表达式对dataframe中的值进行替换
pandas使用replace函数替换dataframe中的值:replace函数使用正则表达式对dataframe中的值进行替换 目录
- python dataframe增加一行_python - 在pandas.DataFrame中添加一行
python - 在pandas.DataFrame中添加一行 据我所知,pandas旨在加载完全填充的DataFrame,但我需要创建一个空的DataFrame,然后逐个添加行.做这个的最好方式是什 ...
- 在Pandas DataFrame中重塑数据
目录 介绍 透视Pandas DataFrame 在Pandas DataFrame中对数据进行分组 总结 使用我们的数据集后,我们将快速查看可以使用流行的Python库从数据集轻松创建的可视化,然后 ...
- python将ElasticSearch索引数据读入pandas dataframe实战
python将ElasticSearch索引数据读入pandas dataframe实战 # 导入基础包和库 import pandas as pdpd.set_option('display.max ...
最新文章
- 客快物流大数据项目(九):Docker常用命令
- 为何Redis要比Memcached好用(转)
- Android之创建简单的ProgressDialog
- python中文软件-Python
- MPLS/×××分解:防止PE-CE的路由环路
- UA MATH571A R语言回归分析实践 一元回归2 NBA球员的工资
- 文本处理利器Linux Awk这样入门☛常见变量的使用
- python列表中数据类型可以不同吗_Python改变列表中数据类型的方法
- Full_of_Boys训练2总结
- Linux的帧缓冲设备
- TPL 和传统 .NET Framework 异步编程
- 用python绘制熊猫图案_绘制带有熊猫和Matplotlib的一分钟烛台
- 精选的 Go 框架,库和软件的精选清单
- Newton tangent method
- R星安装不完全无法载入social club(错误码:1)解决办法
- 微信,支付宝,收款二维码实时生成订单监控,免签支,付支付系统,个人收款,收款二维码...
- jquery mouse事件小坑
- 20176408李俊 线性表
- Array.reduce()的用法与进阶
- 某大学生写给女朋友的信
热门文章
- 海思QT开发系列(一):3559平台QT移植
- Excel中图片网页链接直接显示
- 李晓应想对他爱的訾先梦说的话
- JavaScript【十一】2022.5.23第十三周
- pika.exceptions.ChannelWrongStateError: Channel is closed.
- XP系统目录服务器恢复模式,WinXP高级启动选项功能介绍
- 青龙面板拉库命令大全最新【实时更新中......】
- 软件开发中的破窗效应
- NodeJS 导入包的时候出现的 @types 错误导致程序无法运行
- iphone新旧手机数据传输已取消_这个便捷的手机数据迁移工具,让数据搬家不再困难...