【问题标题】:How do I reverse pd.to_datetime in a dataframe column?如何在数据框列中反转 pd.to_datetime?
【发布时间】:2021-03-03 17:13:48
【问题描述】:

我需要合并两个 CSV(一个称为 SF1,另一个 DAILY)文件的日期,为此,我需要将它们的日期转换为 datetime 对象。我这样做是:

self.daily['date'] = pd.to_datetime((self.daily['date']))
self.sf1['calendardate'] = pd.to_datetime(self.sf1['calendardate'])

我将它们与这段代码合并:

self.complete_data = pd.merge_asof(self.daily, self.sf1, by='ticker', left_on='date', right_on='calendardate')

合并后,我需要将'date' 列转换回格式为YYYY-MM-DD 的字符串。我尝试过使用strftime,但一直出错。有没有更简单的方法?

每日 csv:

,ticker,date,lastupdated,ev,evebit,evebitda,marketcap,pb,pe,ps
180766,AAPL,2007-05-30,2020-08-31,95640.1,24.1,22.6,102735.1,8.4,36.8,4.8
180716,AAPL,2007-05-31,2020-08-31,97722.9,24.7,23.1,104817.9,8.5,37.6,4.9

SF1 csv:

ticker,calendardate,accoci,assets,assetsavg,assetsc,assetsnc,assetturnover,bvps,capex,cashneq,cashnequsd,cor,consolinc,currentratio,de,debt,debtc,debtnc,debtusd,deferredrev,depamor,deposits,divyield,dps,ebit,ebitda,ebitdamargin,ebitdausd,ebitusd,ebt,eps,epsdil,epsusd,equity,equityavg,equityusd,fcf,fcfps,fxusd,gp,grossmargin,intangibles,intexp,invcap,invcapavg,inventory,investments,investmentsc,investmentsnc,liabilities,liabilitiesc,liabilitiesnc,ncf,ncfbus,ncfcommon,ncfdebt,ncfdiv,ncff,ncfi,ncfinv,ncfo,ncfx,netinc,netinccmn,netinccmnusd,netincdis,netincnci,netmargin,opex,opinc,payables,payoutratio,pe1,ppnenet,prefdivis,price,ps1,receivables,retearn,revenue,revenueusd,rnd,roa,roe,roic,ros,sbcomp,sgna,sharefactor,sharesbas,shareswa,shareswadil,sps,tangibles,taxassets,taxexp,taxliabilities,tbvps,workingcapital
0,AAPL,2007-06-30,56000000.0,21647000000.0,,18745000000.0,2902000000.0,,0.552,-283000000.0,7118000000.0,7118000000.0,3415000000.0,818000000.0,2.681,0.615,0.0,0.0,0.0,0.0,0.0,81000000.0,0.0,0.0,0.0,1196000000.0,1277000000.0,0.236,1277000000.0,1196000000.0,1196000000.0,0.034,0.033,0.034,13404000000.0,,13404000000.0,944000000.0,0.039,1.0,1995000000.0,0.369,275000000.0,0.0,7262000000.0,,251000000.0,6649000000.0,6649000000.0,0.0,8243000000.0,6992000000.0,1251000000.0,23000000.0,-6000000.0,118000000.0,0.0,0.0,229000000.0,-1433000000.0,-1170000000.0,1227000000.0,0.0,818000000.0,818000000.0,818000000.0,0.0,0.0,0.151,954000000.0,1041000000.0,3660000000.0,0.0,36.815,1626000000.0,0.0,4.7860000000000005,5.134,1410000000.0,8199000000.0,5410000000.0,5410000000.0,208000000.0,,,,,65000000.0,746000000.0,1.0,24349946740.0,24270568000.0,24938788000.0,0.223,21372000000.0,687000000.0,378000000.0,0.0,0.8809999999999999,11753000000.0
48,AAPL,2007-06-30,56000000.0,21647000000.0,19256000000.0,18745000000.0,2902000000.0,1.175,0.552,-675000000.0,7118000000.0,7118000000.0,15150000000.0,3134000000.0,2.681,0.615,0.0,0.0,0.0,0.0,0.0,290000000.0,0.0,0.0,0.0,4499000000.0,4789000000.0,0.212,4789000000.0,4499000000.0,4499000000.0,0.13,0.127,0.13,13404000000.0,11719250000.0,13404000000.0,4154000000.0,0.171,1.0,7476000000.0,0.33,275000000.0,0.0,7262000000.0,5515250000.0,251000000.0,6649000000.0,6649000000.0,0.0,8243000000.0,6992000000.0,1251000000.0,-895000000.0,-222000000.0,325000000.0,0.0,0.0,650000000.0,-6374000000.0,-5492000000.0,4829000000.0,0.0,3134000000.0,3134000000.0,3134000000.0,0.0,0.0,0.139,3519000000.0,3957000000.0,3660000000.0,0.0,36.815,1626000000.0,0.0,4.7860000000000005,5.134,1410000000.0,8199000000.0,22626000000.0,22626000000.0,754000000.0,0.163,0.267,0.816,0.199,214000000.0,2765000000.0,1.0,24349946740.0,24270568000.0,24938788000.0,0.932,21372000000.0,687000000.0,1365000000.0,0.0,0.8809999999999999,11753000000.0

合并的 csv:

,ticker,date,lastupdated,ev,evebit,evebitda,marketcap,pb,pe,ps,calendardate,accoci,assets,assetsavg,assetsc,assetsnc,assetturnover,bvps,capex,cashneq,cashnequsd,cor,consolinc,currentratio,de,debt,debtc,debtnc,debtusd,deferredrev,depamor,deposits,divyield,dps,ebit,ebitda,ebitdamargin,ebitdausd,ebitusd,ebt,eps,epsdil,epsusd,equity,equityavg,equityusd,fcf,fcfps,fxusd,gp,grossmargin,intangibles,intexp,invcap,invcapavg,inventory,investments,investmentsc,investmentsnc,liabilities,liabilitiesc,liabilitiesnc,ncf,ncfbus,ncfcommon,ncfdebt,ncfdiv,ncff,ncfi,ncfinv,ncfo,ncfx,netinc,netinccmn,netinccmnusd,netincdis,netincnci,netmargin,opex,opinc,payables,payoutratio,pe1,ppnenet,prefdivis,price,ps1,receivables,retearn,revenue,revenueusd,rnd,roa,roe,roic,ros,sbcomp,sgna,sharefactor,sharesbas,shareswa,shareswadil,sps,tangibles,taxassets,taxexp,taxliabilities,tbvps,workingcapital
0,INTC,1998-12-01,2019-07-30,189580.0,21.8,16.8,191705.0,8.8,33.4,7.6,1998-09-30,182000000.0,29388000000.0,29228750000.0,14713000000.0,14675000000.0,0.861,3.2489999999999997,-4512000000.0,2900000000.0,2900000000.0,11643000000.0,5747000000.0,2.799,0.348,775000000.0,192000000.0,583000000.0,775000000.0,471000000.0,2581000000.0,0.0,0.001,0.03,8681000000.0,11262000000.0,0.44799999999999995,11262000000.0,8681000000.0,8651000000.0,0.865,0.807,0.865,21799000000.0,21103000000.0,21799000000.0,4424000000.0,0.659,1.0,13523000000.0,0.537,0.0,30000000.0,22007000000.0,21158500000.0,1578000000.0,7576000000.0,5787000000.0,1789000000.0,7589000000.0,5256000000.0,2333000000.0,-2085000000.0,-946000000.0,-5804000000.0,91000000.0,-199000000.0,-4149000000.0,-6872000000.0,-1414000000.0,8936000000.0,0.0,5747000000.0,5747000000.0,5747000000.0,0.0,0.0,0.228,5587000000.0,7936000000.0,1205000000.0,0.035,25.523000000000003,11863000000.0,0.0,22.078000000000003,5.8870000000000005,3636000000.0,16842000000.0,25166000000.0,25166000000.0,2440000000.0,0.19699999999999998,0.272,0.41,0.345,311000000.0,2966000000.0,1.0,6720000000.0,6710000000.0,7010000000.0,3.7510000000000003,29388000000.0,629000000.0,2904000000.0,1960000000.0,4.38,9457000000.0

当我尝试打印其中一个日期时间对象时,我得到了这个:

Timestamp('2007-05-30 00:00:00')

【问题讨论】:

  • strftime 应该可以工作。究竟使用什么代码会出现什么错误?
  • @ALollz 我不确定如何使其特定于数据框中的列。这是代码:``` self.complete_data = self.complete_data.date.dt.strftime('%Y-%m-%d') ```
  • self.merged['date'] = self.merged['date'].dt.strftime('%Y-%m-%d') ?
  • @anky 我试过了,我得到了这个错误:AttributeError: 'Series' object has no attribute 'columns'

标签: python python-3.x pandas dataframe datetime


【解决方案1】:

一般来说,读取带有日期的 CSV 文件:

import pandas as pd

df = pd.read_csv("data.csv", parse_dates=["date"])
df["date"] = pd.to_datetime(df["date"]).dt.date

这假定文件有一个名为“date”的列,并且您希望将其视为基本的 datetime 日期对象。

【讨论】:

    猜你喜欢
    • 2021-03-10
    • 2019-08-02
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    相关资源
    最近更新 更多