最近做比赛,有时候需要造出新的特征,而这次遇到的问题是将一列数据往下顺移一位。同时将开头缺失的那一个数据用其他方式填充。

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的一列进行向下顺移问题相关推荐

  1. python怎么让画笔向下移动_Pandas 解决dataframe的一列进行向下顺移问题

    最近做比赛,有时候需要造出新的特征,而这次遇到的问题是将一列数据往下顺移一位.同时将开头缺失的那一个数据用其他方式填充. df['feature'].shift(1)向下顺移一位,这时第一位会置为na ...

  2. python交换两列的位置_如何更改 pandas dataframe 中两列的位置

    如何更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeand ...

  3. 更改 pandas dataframe 中两列的位置

    更改 pandas dataframe 中两列的位置: 把其中的某列移到第一列的位置. 原来的 df 是: df = pd.read_csv('I:/Papers/consumer/codeandpa ...

  4. 向Spark的DataFrame增加一列数据

    前言 先说个题外话,如何给hive表增加一个列,并且该把该列的所有字段设为'China'? 如果仅仅是增加一列倒是很简单: alter table test add columns(flag stri ...

  5. PySpark:DataFrame及其常用列操作

    Spark版本:V3.2.1 1. DataFrame 虽然RDD是Spark最基本的抽象,但RDD的计算函数对Spark而言是不透明的.也就是说Spark并不知道你要在计算函数里干什么.无论你是要做 ...

  6. pandas中如何提取DataFrame的某些列

    在处理表格型数据时,一行数据是一个 sample,列就是待提取的特征.怎么选取其中的一些列呢?本文分享一些方法. 使用如下的数据作为例子: import pandas as pd data = pd. ...

  7. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data)

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data) 目录 R语言使用多个 ...

  8. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用$操作符和列名称访问dataframe指定数据列的数据

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用$操作符和列名称访问dataframe指定数据列的数据 目录 R语言使用多个数据类型不同的向量数据创建一个dataframe ...

  9. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index)

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index) 目录 R语言使用多个数据类型不同的 ...

最新文章

  1. Java计算两个字符串日期之间的天数差
  2. [NOI2015]程序自动分析
  3. [xsy2880]取石子游戏
  4. ALV中调用Excel, 丢掉前面的0问题解决
  5. 左神算法:两个单链表相交的一系列问题(链表是否有环 / 两无环链表是否相交 / 两有环链表是否相交)
  6. Linux网络编程 之 套接字(四)
  7. OSChina 周日乱弹 —— 我叫张一条
  8. [ NOIP 1998 ] TG
  9. python渲染html页面_python接口自动化29-requests-html支持JavaScript渲染页面
  10. 交叉熵损失的来源、说明、求导与pytorch实现
  11. 华南农业大学计算机科学与技术专业,华南农业大学住宿
  12. 人工智能发展白皮书 笔记
  13. JAVA ImageIO图片处理后变色
  14. Jmeter入门(一)使用Jmeter进行简单的性能测试
  15. 【网络安全】文件上传漏洞 详解
  16. linux bochs 网络,Linux下Bochs的使用(转载)
  17. 树莓派使用360wifi2实现无线上网
  18. XTDrone无人机、无人车等自动控制仿真平台
  19. 建议收藏 | 盘点那些 Python 好玩的练习题目
  20. 什么是Modernizr?

热门文章

  1. SmartQuery WebPart 2.0 发布。
  2. web service方法进行全文检索_SpringMVC(Web应用)配置教程终章项目实战
  3. SAP实战中Submit的常见用法-调用标准程序
  4. LSMW批处理使用方法(09)_步骤10、11
  5. 抢红包的红包生成算法
  6. OOALV 中DATA_CHANGED_FINISHED调用刷新弹出排序窗口解决方案
  7. 全球最难翻译的十大单词
  8. ABAP_Excel 处理总结(二)
  9. 「氮科技」加持下,「疾速奔跑」的安踏超越耐克还需多久?
  10. 买淘宝特价版,产业升级的证明