pythonslice_shift_Pandas 解决dataframe的一列进行向下顺移问题
最近做比赛,有时候需要造出新的特征,而这次遇到的问题是将一列数据往下顺移一位。同时将开头缺失的那一个数据用其他方式填充。
df['feature'].shift(1)向下顺移一位,这时第一位会置为nan,需要填充。
----------------------历史分割线-----------------
错误方案:
当时首先想到的是用loc来直接进行替换,也就是
i = len(dt)
dt_new = pd.DataFrame()
dt_new.loc[0, 'test'] = 0
dt_new.loc[1 : i - 1, 'test'] = dt.loc[0 : i - 2, 'data'] #这里会报错
愿望很美好,现实很残酷,这种方法会报错。
不太好的方案:
于是打算用循环的办法一个一个替换
dt_new = pd.DataFrame()
dt_new.loc[0, 'test'] = 0
for i in range(len(dt) - 1):
dt_new.loc[i + 1, 'test'] = dt.loc[i, 'data']
然而这个仅仅O(n)算法复杂度的东西,实际检验当用在几万行数据真的可以给你算好久好久,所以这个办法也弃用了。
正确方案:
pandas的dataframe,每一行是有序号的,直接进行替换的话,有时它会将相同序号的进行替换,这个是dataFrame的特性,有时会忽略从你选择的那一行开始替换,而直接从0开始。所以如果想用pandas来进行顺位移动的话,目前没有在API中找到便捷的方法。
最后终于想到了另外一个办法,就是转化为Numpy数组进行移动后,再转回dataFrame。
dt_v = dt['data'].values
dt_v = dt_v.flatten()
i = len(dt)
dt_new_v = np.zeros(i)
dt_new_v[0] = 0
dt_new_v[1 : i] = dt_v[0 : i - 1] #这里要注意Numpy数组截取[1, i]实际截取的是[1, i - 1]行!
dt_new = pd.DataFrame()
dt_new['test'] = dt_new_v
要注意Numpy数组截取[1, i]实际截取的是第[1, i - 1]行!
以上这篇Pandas 解决dataframe的一列进行向下顺移问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
本文标题: Pandas 解决dataframe的一列进行向下顺移问题
本文地址: http://www.cppcns.com/jiaoben/python/295718.html
pythonslice_shift_Pandas 解决dataframe的一列进行向下顺移问题相关推荐
- python怎么让画笔向下移动_Pandas 解决dataframe的一列进行向下顺移问题
最近做比赛,有时候需要造出新的特征,而这次遇到的问题是将一列数据往下顺移一位.同时将开头缺失的那一个数据用其他方式填充. df['feature'].shift(1)向下顺移一位,这时第一位会置为na ...
- python交换两列的位置_如何更改 pandas dataframe 中两列的位置
如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...
- 更改 pandas dataframe 中两列的位置
更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeandpa ...
- 向Spark的DataFrame增加一列数据
前言 先说个题外话,如何给hive表增加一个列,并且该把该列的所有字段设为'China'? 如果仅仅是增加一列倒是很简单: alter table test add columns(flag stri ...
- PySpark:DataFrame及其常用列操作
Spark版本:V3.2.1 1. DataFrame 虽然RDD是Spark最基本的抽象,但RDD的计算函数对Spark而言是不透明的.也就是说Spark并不知道你要在计算函数里干什么.无论你是要做 ...
- pandas中如何提取DataFrame的某些列
在处理表格型数据时,一行数据是一个 sample,列就是待提取的特征.怎么选取其中的一些列呢?本文分享一些方法. 使用如下的数据作为例子: import pandas as pd data = pd. ...
- R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data)
R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data) 目录 R语言使用多个 ...
- R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用$操作符和列名称访问dataframe指定数据列的数据
R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用$操作符和列名称访问dataframe指定数据列的数据 目录 R语言使用多个数据类型不同的向量数据创建一个dataframe ...
- R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index)
R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index) 目录 R语言使用多个数据类型不同的 ...
最新文章
- Java计算两个字符串日期之间的天数差
- [NOI2015]程序自动分析
- [xsy2880]取石子游戏
- ALV中调用Excel, 丢掉前面的0问题解决
- 左神算法:两个单链表相交的一系列问题(链表是否有环 / 两无环链表是否相交 / 两有环链表是否相交)
- Linux网络编程 之 套接字(四)
- OSChina 周日乱弹 —— 我叫张一条
- [ NOIP 1998 ] TG
- python渲染html页面_python接口自动化29-requests-html支持JavaScript渲染页面
- 交叉熵损失的来源、说明、求导与pytorch实现
- 华南农业大学计算机科学与技术专业,华南农业大学住宿
- 人工智能发展白皮书 笔记
- JAVA ImageIO图片处理后变色
- Jmeter入门(一)使用Jmeter进行简单的性能测试
- 【网络安全】文件上传漏洞 详解
- linux bochs 网络,Linux下Bochs的使用(转载)
- 树莓派使用360wifi2实现无线上网
- XTDrone无人机、无人车等自动控制仿真平台
- 建议收藏 | 盘点那些 Python 好玩的练习题目
- 什么是Modernizr?
热门文章
- SmartQuery WebPart 2.0 发布。
- web service方法进行全文检索_SpringMVC(Web应用)配置教程终章项目实战
- SAP实战中Submit的常见用法-调用标准程序
- LSMW批处理使用方法(09)_步骤10、11
- 抢红包的红包生成算法
- OOALV 中DATA_CHANGED_FINISHED调用刷新弹出排序窗口解决方案
- 全球最难翻译的十大单词
- ABAP_Excel 处理总结(二)
- 「氮科技」加持下,「疾速奔跑」的安踏超越耐克还需多久?
- 买淘宝特价版,产业升级的证明