python fill函数填充_python开始填充

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

摘要:这篇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大数据社区。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170031.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • LTE学习笔记:频带、信道带宽和频点号EARFCN「建议收藏」

    LTE学习笔记:频带、信道带宽和频点号EARFCN「建议收藏」转自:https://blog.csdn.net/m_052148/article/details/513222601.频带(Band)所谓频带,指代的是一个频率的范围或者频谱的宽度,即无线解码器的最低工作频率至最高工作频率之间的范围,单位是Hz。为了方便起见,在LTE中,使用数字1-43来表示不同的频带(36101-V10.21.0版本协议),从而指代不同的频率范围。协议36101规…

    2022年10月11日
    3
  • 使用ctk库

    使用ctk库上篇文章写的如何生成一个简易ctk动态库https://blog.csdn.net/qq_16238157/article/details/86602476这篇文章写如何简易的使用交代路径下图上篇文章已经写过关于ctk动态库如何生成下面介绍一下各个文件夹:CTK文件夹:是ctk的源码ctkWork文件夹:用vs编译生成的ctk插件myCTK文件夹:是网上找的一个调用ct…

    2022年6月3日
    70
  • python3合并两个有序列表 and 加一

    python3合并两个有序列表 and 加一

    2021年4月18日
    146
  • VS2005透过SourceOffSite访问VSS2005的设置方法「建议收藏」

    小弟之前写了一篇VS2005透过Internet访问VSS2005的设置步骤,其实这个目的可以采用第三方软件工具SourceOffSite实现而且方法更简便,现将小弟试验的方法供大家参考。1。下载并安装SourceOffSite4.2(该工具分server,client两个程式),自己在网络上找下下载地址。安装部分也非常简单。2。设置Server部分,执行SourceOffSite4S

    2022年4月13日
    58
  • 基于stm32门禁系统_老式门禁

    基于stm32门禁系统_老式门禁0、前言RC522射频门禁识别模块非常常用,某宝卖家提供的程序基本都是使用软件模拟SPI的方式进行驱动的,但是实测使用软件模拟SPI识别速率、准确性没有硬件SPI驱动时高,因此本篇博客用于记录使用STM32硬件SPI驱动RC522门禁模块。1、硬件连接单片机:STM32F103RCT6硬件接口:SPI2MISO->PB14(主机输入,从机输出)MOSI->PB15(主机输出,从机输入)SCK->PB13(时钟信号SCLK)SDA->PC

    2022年9月16日
    5
  • Request对象详细介绍「建议收藏」

    Request对象详细介绍「建议收藏」在做Web端程序开发时,少不了与这两个内置对象打交道。可以说整个客户端与服务端之间的交互都是通过这两个内置对象做关联,下面来详细的说一下。 1.Request对象 该对象用来在服务器端处理客户端发送的请求。 我们可以了解request对象是当客户端向服务端发送请求后,服务器为本次请求创建request对象,并调用

    2022年5月3日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号