摘要:这篇Python开发技术栏目下的“python dataframe向下向上填充,fillna和ffill的方法”,介绍的技术点是“DataFrame、fillna、Python、ffill、_和__、填充”,希望对大家开发技术学习和问题解决有帮助。今天小编就为大家分享一篇python dataframe向下向上填充,fillna和ffill的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

首先新建一个dataframe:

In[8]: df = pd.DataFrame({'name':list('ABCDA'),'house':[1,1,2,3,3],'date':['2010-01-01','2010-06-09','2011-12-03','2011-04-05','2012-03-23']})

In[9]: df

Out[9]:

date house name

0 2010-01-01 1 A

1 2010-06-09 1 B

2 2011-12-03 2 C

3 2011-04-05 3 D

4 2012-03-23 3 A

将date列改为时间类型:

In[12]: df.date = pd.to_datetime(df.date)

数据的含义是这样的,我们有ABCD四个人的数据,已知A在2010-01-01的时候,名下有1套房,B在2010-06-09的时候,名下有1套房,C在2011-12-03的时候,有2套房,D在2011-04-05的时候有3套房,A在2012-02-23的时候,数据更新了,有两套房。

要求在有姓名和时间的情况下,能给出其名下有几套房:

比如A在2010-01-01与2012-03-23期间任意一天,都应该是1套房,在2012-03-23之后,都是3套房。

我们使用pandas的fillna方法,选择ffill。

首先我们获得一个2010-01-01到2017-12-01的dataframe

In[14]: time_range = pd.DataFrame(

pd.date_range('2010-01-01','2017-12-01',freq='D'), columns=['date']).set_index("date")

In[15]: time_range

Out[15]:

Empty DataFrame

Columns: []

Index: [2010-01-01 00:00:00, 2010-01-02 00:00:00, 2010-01-03 00:00:00, 2010-01-04 00:00:00, 2010-01-05 00:00:00, 2010-01-06 00:00:00, 2010-01-07 00:00:00, 2010-01-08 00:00:00, 2010-01-09 00:00:00, 2010-01-10 00:00:00, 2010-01-11 00:00:00, 2010-01-12 00:00:00, 2010-01-13 00:00:00, 2010-01-14 00:00:00, 2010-01-15 00:00:00, 2010-01-16 00:00:00, 2010-01-17 00:00:00, 2010-01-18 00:00:00, 2010-01-19 00:00:00, 2010-01-20 00:00:00, 2010-01-21 00:00:00, 2010-01-22 00:00:00, 2010-01-23 00:00:00, 2010-01-24 00:00:00, 2010-01-25 00:00:00, 2010-01-26 00:00:00, 2010-01-27 00:00:00, 2010-01-28 00:00:00, 2010-01-29 00:00:00, 2010-01-30 00:00:00, 2010-01-31 00:00:00, 2010-02-01 00:00:00, 2010-02-02 00:00:00, 2010-02-03 00:00:00, 2010-02-04 00:00:00, 2010-02-05 00:00:00, 2010-02-06 00:00:00, 2010-02-07 00:00:00, 2010-02-08 00:00:00, 2010-02-09 00:00:00, 2010-02-10 00:00:00, 2010-02-11 00:00:00, 2010-02-12 00:00:00, 2010-02-13 00:00:00, 2010-02-14 00:00:00, 2010-02-15 00:00:00, 2010-02-16 00:00:00, 2010-02-17 00:00:00, 2010-02-18 00:00:00, 2010-02-19 00:00:00, 2010-02-20 00:00:00, 2010-02-21 00:00:00, 2010-02-22 00:00:00, 2010-02-23 00:00:00, 2010-02-24 00:00:00, 2010-02-25 00:00:00, 2010-02-26 00:00:00, 2010-02-27 00:00:00, 2010-02-28 00:00:00, 2010-03-01 00:00:00, 2010-03-02 00:00:00, 2010-03-03 00:00:00, 2010-03-04 00:00:00, 2010-03-05 00:00:00, 2010-03-06 00:00:00, 2010-03-07 00:00:00, 2010-03-08 00:00:00, 2010-03-09 00:00:00, 2010-03-10 00:00:00, 2010-03-11 00:00:00, 2010-03-12 00:00:00, 2010-03-13 00:00:00, 2010-03-14 00:00:00, 2010-03-15 00:00:00, 2010-03-16 00:00:00, 2010-03-17 00:00:00, 2010-03-18 00:00:00, 2010-03-19 00:00:00, 2010-03-20 00:00:00, 2010-03-21 00:00:00, 2010-03-22 00:00:00, 2010-03-23 00:00:00, 2010-03-24 00:00:00, 2010-03-25 00:00:00, 2010-03-26 00:00:00, 2010-03-27 00:00:00, 2010-03-28 00:00:00, 2010-03-29 00:00:00, 2010-03-30 00:00:00, 2010-03-31 00:00:00, 2010-04-01 00:00:00, 2010-04-02 00:00:00, 2010-04-03 00:00:00, 2010-04-04 00:00:00, 2010-04-05 00:00:00, 2010-04-06 00:00:00, 2010-04-07 00:00:00, 2010-04-08 00:00:00, 2010-04-09 00:00:00, 2010-04-10 00:00:00, ...]

[2892 rows x 0 columns]

然后用上上篇博客中提到的pivot_table将原本的df转变之后,与time_range进行merger操作。

In[16]: df = pd.pivot_table(df, columns='name', index='date')

In[17]: df

Out[17]:

house

name A B C D

date

2010-01-01 1.0 NaN NaN NaN

2010-06-09 NaN 1.0 NaN NaN

2011-04-05 NaN NaN NaN 3.0

2011-12-03 NaN NaN 2.0 NaN

2012-03-23 3.0 NaN NaN NaN

In[18]: df = df.merge(time_range,how="right", left_index=True, right_index=True)

然后再进行向下填充操作:

In[20]: df = df.fillna(method='ffill')

最后:

df = df.stack().reset_index()

结果太长,这里就不粘贴了。如果想向上填充,可选择method = 'bfill‘

以上这篇python dataframe向下向上填充,fillna和ffill的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持Java大数据社区。

fillna填充某一列_python dataframe向下向上填充,fillna和ffill的方法相关推荐

  1. python pandas dataframe 不显示索引_Python DataFrame 设置输出不显示index(索引)值的方法...

    Python DataFrame 设置输出不显示index(索引)值的方法 在输出代码行中,加入"index=False"如下: m_pred_survived.to_csv(&q ...

  2. python dataframe取一列_python DataFrame列运算

    展开全部 用2113pandas中的DataFrame时选取行或列: 1.import numpy as npimport pandas as pdfrom pandas import Sereis, ...

  3. dataframe 修改某列_python dataframe操作大全数据预处理过程(dataframe、md5)

    hive表的特征选择,不同表之间的join 训练数据.测试数据的分开保存 使用pandas进行数据处理 显示所有列:pd.set_option('display.max_columns', None) ...

  4. python怎么选取第几行第几列_python DataFrame获取行数、列数、索引及第几行第几列的值方法...

    python DataFrame获取行数.列数.索引及第几行第几列的值方法 更新时间:2018年04月08日 16:22:00 作者:小白九九 下面小编就为大家分享一篇python DataFrame ...

  5. python的填充色怎么弄_python中如何给图形填充颜色

    使用Turtle不只可以画线条,也可以将画出的封闭线条进行填充. -设定填充色:fillecolor(r, g, b) -开始填充:begin_fill() -结束填充:end_fill() 画一组随 ...

  6. python命令行tab补全_python命令行下按tab建补全的方法

    此方法只在centos6上测试通过,其它系统木有测试 1.在用户家目录下创建一个名字叫 .pythonstartup 的隐藏文件,写入如下内容: # python startup file impor ...

  7. python填充空值_python dataframe均值填充知识点详解

    python dataframe均值填充 pandas 用均值填充缺失值列的技巧 pd.DataFrame中通常含有许多特征,有时候需要对每个含有缺失值的列,都用均值进行填充,代码实现可以这样: fo ...

  8. pandas使用fillna函数并设置bfill参数使用列中的后序值填充缺失值

    pandas使用fillna函数并设置bfill参数使用列中的后序值填充缺失值(replace missing values with following values in column in da ...

  9. fillna填充某一列_pandas学习笔记 -了解数据集基本情况,提取数据,缺失值NULL的判断,删除和补充(dropna,fillna的用法)...

    part1 了解数据集基本情况 当我们面对一个很大的数据集的时候,如何快速得到他的行数与列数呢? 举个栗子,我们读取一个nhanes数据集,我们加上一个.shape,输出的结果就是他的行数和列数了. ...

最新文章

  1. java静态代理与动态代理
  2. 【转载】在对话框中加入属性页
  3. php中this,self,parent三个关键字之间的区别(转载)
  4. mysql数据库表格怎么建立_mysql数据库表格怎么建立
  5. How to Build a User Experience Team
  6. 走近5G云游戏标准制定——握住互联网世界看不见的手
  7. 深入理解mysql系列_深入理解MySQL系列之锁
  8. 坑哭了!老牌教育机构也崩盘,疑失联跑路,学员却还得继续还贷
  9. LeetCode OJ - Surrounded Regions
  10. 关于 cocos2d-x win32 版本的 cpu 占用改良
  11. 【深度学习中的数学】高维矩阵乘法规则
  12. 关于三维制作技术软件的调研分析
  13. 【算法学习】基本的图算法(广搜、深搜、拓扑排序、强连通分量)
  14. EMC共模干扰与差模干扰是什么?怎么解决?
  15. 模型评估与改进(三)// 评估指标
  16. SN74LS148优先编码器的级联使用
  17. oracle索引一般叫什么意思,什么是oracle索引?
  18. 机器学习分类模型评价指标详述
  19. 推荐一些在线效率工具汇总(数据分析,舆情监测、图片语义识别等)
  20. 蜗牛移动被联通叫停放号,疑为受到大量投诉

热门文章

  1. 怎么搭建和装修自己的小程序商城
  2. 租号玩服务器未响应,win10cf进度条不动
  3. 兼容MySQL中的find_in_set函数
  4. linux显卡fps性能测试台,Quadro显卡多系统测试 Linux性能最强
  5. Java 读取文件中文乱码处理 Java IO读取txt文件内容的正确姿势避免中文乱码
  6. 三流员工熬时间,二流员工拼执行,一流员工靠什么?
  7. 用一条SQL语句查询出每门课都大于80分的学生姓名
  8. poi 合并重复单元格以及冻结行列
  9. 【艾琪出品】《计算机应用基础》【试题汇总3】《多媒体技术》《网页设计与制作》《电子商务网站设计与管理》《数据库原理》
  10. excel批量插入图片(宏方式)