pandas中如何提取出某一列(column)的日期数字

pandas中如何提取出某一列(column)的日期数字,第1张

这两天,有个小伙伴问我这么一个问题,就是说他公司给了他一个table, 大概是140万行,其中有一列既有数字也有其它字符。例如 2021年02月01日 ,想从里面仅仅把数字提取出来保存成日期格式,比如说 2021-02-01 ,虽然最近忙得飞起,但是看在当年一起读初中的峥嵘岁月,我大概花了5分钟写了一个demo,给他提供了三种解法。

第一步,构造一个fake datasets, 模拟他的需求。

模拟数据如下:

即从Date这一列中,将日期提取出来,保存为2021-03-01这种类型。

解决问题的时候,思维不能太固化。我们既可以通过将数字“提取出来”,也可以选择将除了数字之外的其它字符“抠除”。

略加思忖,给小伙伴提供了三种解法。

方法1:

方法1结果:

方法2:

方法2结果:

方法3:

方法3结果:

方法很多,肯定也不止这几种,但是我们做数据分析,是以解决问题为导向,是在速度和效率之间,寻找一个balance, 毕竟我们知道茴香豆的茴的一种写法,就足够了。

Done!

注:《利用python进行数据分析》的学习笔记-pandas

import pandas as pd

import numpy as np

一维数组,包含一个数组对象,一个索引对象,索引对象默认为0开始的递增数字,可通过index=[idx1, idx2, ]参数指定

可通过索引选取/修改相应的数据,选取:data=series[idx], 修改:series[[idxm, idxn, ]]=[dm, dn, ]

series可看成定长有序字典,索引到数据的映射,series可用于字典参数的函数中。idxn in series返回True/False

多个series做算术 *** 作,会自动对齐不同索引的数据,无此数据自动填充NaN

可看作多个series组成的表单,dataframe有两种索引,与series相同的index行索引,还有columns列索引

选取/修改一行数据    dataframeloc['index']

选取/修改一列数据    dataframe['column'], dataframecolumn

objreindex(newIndex)                                                                                                    #适用于series与dataframe

objreindex(index=newIndex, columns=newcolumns)                                                    #dataframe需对行索引列索引都重新索引时

objreindex(index=newindex, columns=newcolumns, fill_value=100)                            #指定填充值,不指定时填充NaN

objreindex(index=newindex, columns=newcolumns, fill_value=100, method='ffill')      #指定填充方法ffill/pad(前向填充),bfill/backfill(后向填充)

obj=objdrop(index, axis=0)

obj=objdrop([col1, col2, ], axis=1)

axis默认为0,删除列数据时指定axis为1

series

obj = pdSeries(range(5), index=list('abcde'))

取单数            obj[2],      obj['c']

切片取数        obj[2:5],    obj['a':'c']

不连续取数    obj[1,3],    obj['a','c','d']

过滤               obj[obj>2],

修改               obj[3]=0,

注:series切片不用于python数据结构的切片,series的切片包含末端,即python:[start, end), series:[start, end]

dataframe

obj = pdDataFrame(nparange(15)reshape((3,5)),

                        index = ['one', 'two', 'three'],

                        columns = list('abcde') )

取单列             objloc[:, 'c'],                             objiloc[:, 2],                            objxs('c', axis=1),                       obj['c'], 

取单行             objloc['one'],                            objiloc[1],                               objxs('one', axis=0), 

取连续行         objloc['one':'three'],                  objiloc[1:3],                obj[:2], 

取连续列         objloc[:, 'b':'d'],                         objiloc[:, 2:4],

取不连续行     objloc[['one','three']]                 objiloc[[0,2]],

取不连续列     objloc[:, ['b', 'e']]                       objiloc[:, [1,4]],

取单行单列     objloc['two', 'd']                         objiloc[2, 4]

取连续行列     objloc['one':'three', 'b':'d']          objiloc[:2, 2:4]

取不连续行列  objloc[['one','three'], ['b':'d']]     objiloc[[0,2], [1,4]]

根据列值过滤行      objloc[obj['c']%2==0, :]      

此处吐个槽,这个切片方法一会儿只能取单列,一会儿只能取连续行,一会儿包含终止项,一会儿不包含,我人都傻了

loc/iloc方法接收两个参数,第一个是行,第二个是列,都可切片,也都可指定索引,列参数可以不写,默认取所有列数据

下面总结下这个花哨的切片!

dataframe有两种索引,行索引/列索引。每种索引包含两类用法,索引名称(对应dfloc)/索引下标对应(dfiloc)

①    df[columnName]                                             取单列数据,只能用列名,不能使用列下标,不能用于取单行

②    df[lineName1: lineName2]                              取连续行数据,使用行名时,包含末尾项,即[start,end]

③    df[lineIndex1: lineIndex2]                                取连续行数据,使用行下标时,不包含末尾项 ,即[start,end)

④    dfloc['line2':'line4']                                          取连续行数据,使用行名时,包含末尾项,即[start,end]      

⑤    dfiloc[2:4]                                                       取连续行数据,使用行下标时,不包含末尾项 ,即[start,end) 

⑥    dfloc[:, columnName1:columnName2]          取连续列,使用列名时,包含末尾项,即[start,end]    

⑦    dfiloc[:, columnIndex1:columnIndex2]           取连续列,使用列下标时,不包含末尾项,即[start,end)

⑧    dfloc[[lineName1, ], [columnName1, ]]    使用行名/列名取不连续行列

⑨    dfiloc[[lineIndex1, ], [columnIndex1, ]]     使用行下标/列下标取不连续行列

以前用的时候总觉得奇奇怪怪的,花了一下午时间一个一个尝试终于捋顺了,欧耶! (〃 ̄︶ ̄) 人 ( ̄︶ ̄〃)

DataFrame直接切片,即df[args],可用于指定列名取单列数据,可用于指定行名/行下标取连续多行数据

                                                        取单行数据不可直接切片,需使用loc/iloc方法

DataFrameloc(line, column)    用于按索引名称取行/列数据,此时,首尾项都会被取出

                                                 参数line指定行索引名称,参数2指定列索引名称(可省略,默认选取所有列)。

DataFrameiloc(line, column)   用于按索引下标取行/列数据,此时,尾项数据不会被取出

                                                 参数line指定行索引下标,参数2指定列索引下标(可省略,默认选取所有列)。

以上就是关于pandas中如何提取出某一列(column)的日期数字全部的内容,包括:pandas中如何提取出某一列(column)的日期数字、pandas索引取数、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/10135294.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存