【问题标题】:converting timedeltas to days error将 timedeltas 转换为天数错误
【发布时间】:2016-07-20 23:31:01
【问题描述】:

我在将timedeltas 转换为int (days) 时遇到了问题。

df.FIN = pd.to_datetime(df.FIN, errors = 'coerce')
df.START = pd.to_datetime(df.START, errors = 'coerce')
df["FIN-START"] = df["FIN"] - df["START"]

* 输入:*

0    0 days 00:00:00
1   89 days 19:41:05
2    0 days 00:00:00
3    0 days 00:00:00
4    0 days 00:00:00
...
Name: FIN-START, dtype: timedelta64[ns]

* 导致错误的行:*

df["days"] = df["FIN-START"].apply(lambda td: td.days)

* 错误:*

AttributeError: 'numpy.timedelta64' object has no attribute 'days'

【问题讨论】:

  • 我认为这里的页面回答了你的问题:stackoverflow.com/questions/18215317/…
  • 谢谢 - 这工作。我之前曾尝试过该答案的不同部分。我不清楚为什么 td.days 不起作用但解决方案没问题。

标签: python pandas


【解决方案1】:

对于Series 中的每个元素,将timedelta 转换为timedelta[D],例如94 days。然后,就拿它astype int。

df["days"] = df["FIN-START"].apply(lambda td: td.astype('timedelta64[D]').astype(int))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 2017-04-18
    • 2014-07-24
    • 2018-09-25
    • 1970-01-01
    相关资源
    最近更新 更多