两个日期列之间的年数=“Timedelta”对象没有属性“item”

2024-01-13

下午大家,

查找两个日期之间的年数,精确到小数点后 4 位。我的数据:

df_Years = df[
            df['state'].str.contains('Done')

            ][[  
               'maturity_date'
              ]].copy()

df_Years['maturity_date'] = pd.to_datetime(df_Date['maturity_date'])
df_Years['Today'] = pd.to_datetime('today') 
display(df_Years.head(6))


maturity_date   Today
13  2022-12-15  2018-03-21
81  2028-02-15  2018-03-21
82  2045-12-01  2018-03-21
100 2025-08-18  2018-03-21
115 2019-01-16  2018-03-21
116 2018-12-21  2018-03-21

display(df_Years.dtypes)

maturity_date    datetime64[ns]
Today            datetime64[ns]
dtype: object
#Dataframe types

尝试1:

df_Years['Year_To_Maturity'] = df_Years['maturity_date'] - df_Years['Today']
df_Years['Year_To_Maturity'] = df_Years['Year_To_Maturity'].apply(lambda x: float(x.item().days)/365)

Error:

AttributeError: 'Timedelta' object has no attribute 'item'

尝试2:

df_Years['Year_To_Maturity'] = df_Years['maturity_date'] - df_Years['Today']
df_Years['Year_To_Maturity'] = df_Years['Year_To_Maturity'].apply(lambda x: float(x.item().days)/365)

Output:

maturity_date   Today   Year_To_Maturity
13  2022-12-15  2018-03-21  <map object at 0x00000000143F9C88>
81  2028-02-15  2018-03-21  <map object at 0x00000000143F9C88>
82  2045-12-01  2018-03-21  <map object at 0x00000000143F9C88>
100 2025-08-18  2018-03-21  <map object at 0x00000000143F9C88>
115 2019-01-16  2018-03-21  <map object at 0x00000000143F9C88>
116 2018-12-21  2018-03-21  <map object at 0x00000000143F9C88>

我想知道为什么两者都不输出 Year_To_Maturity ?


我想你需要sub http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.sub.html对于减法,将 timedeltas 转换为天数dt.days http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.days.html, 被除以div http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.div.html最后round http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.round.html:

df_Years['Year_To_Maturity'] = (df_Years['maturity_date'].sub(df_Years['Today'])
                                                         .dt.days
                                                         .div(365)
                                                         .round(4))
print (df_Years)
  maturity_date      Today  Year_To_Maturity
0    2022-12-15 2018-03-21            4.7397
1    2028-02-15 2018-03-21            9.9123
2    2045-12-01 2018-03-21           27.7178
3    2025-08-18 2018-03-21            7.4164
4    2019-01-16 2018-03-21            0.8247
5    2018-12-21 2018-03-21            0.7534

感谢@pir更好的解决方案 https://stackoverflow.com/a/765812/2901002:

df_Years['Year_To_Maturity'] = (df_Years['maturity_date'].sub(df_Years['Today'])
                                                         .dt.days
                                                         .div(365.25)
                                                         .round(4))
print (df_Years)
  maturity_date      Today  Year_To_Maturity
0    2022-12-15 2018-03-21            4.7365
1    2028-02-15 2018-03-21            9.9055
2    2045-12-01 2018-03-21           27.6988
3    2025-08-18 2018-03-21            7.4114
4    2019-01-16 2018-03-21            0.8241
5    2018-12-21 2018-03-21            0.7529
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

两个日期列之间的年数=“Timedelta”对象没有属性“item” 的相关文章

  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 将 pandas 剪切操作转换为常规字符串

    我明白了 pandas cut 操作的输出 0 0 20 1 0 20 2 0 20 3 0 20 4 0 20 5 0 20 6 0 20 7 0 20 8 0 20 9 0 20 如何将 0 20 转换为 0 20 我正在这样做 str
  • Pandas 数据帧中任意两连续行之间差异的平均值

    我有一个数据框 name date quantity A 2016 12 02 20 A 2016 12 04 5 A 2016 11 30 10 B 2016 11 30 10 我想做的是计算 对于任何一对连续的名称的日期 按时间顺序连续
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 如何绘制堆积比例图?

    我有一个数据框 x lt data frame id letters 1 3 val0 1 3 val1 4 6 val2 7 9 id val0 val1 val2 1 a 1 4 7 2 b 2 5 8 3 c 3 6 9 我想绘制一个
  • 从日期变量创建月末日期

    我有一个包含日期变量的大型数据框 它反映了该月的第一天 有没有一种简单的方法来创建代表该月最后一天的新数据框日期变量 以下是一些示例数据 date start month seq as Date 2012 01 01 length 4 by
  • Pandas 每周计算重复值

    我有一个Dataframe包含按周分组的日期和 ID df date id 2022 02 07 1 3 5 4 2022 02 14 2 1 3 2022 02 21 9 10 1 2022 05 16 我想计算每周有多少 id 与上周重
  • 在 python 中使用 pandas 计算行的出现次数

    我有一个包含数千行和 4 列的 pandas 数据框 IE A B C D 1 1 2 0 3 3 2 1 3 1 1 0 有没有办法统计某一行出现了多少次 例如 可以找到多少次 3 1 1 0 并返回这些行的索引 如果你只寻找一行 那么我
  • pandas read_excel(sheet name = None) 返回字符串字典,而不是数据帧?

    The pandas read excel 文档 https pandas pydata org pandas docs stable generated pandas read excel html说指定工作表名称 无应该返回 所有工作表
  • 如何(重新)命名 pandas 数据框中的空列标题而不导出到 csv

    我有一个熊猫数据框df1带有一个索引列和一系列未命名的值 我想为未命名的系列指定一个名称 到目前为止 我知道的唯一方法是导出到df1 csv using df1 to csv df1 csv header Signal 然后使用以下命令重新
  • 在 R 中提取 data.frames 列表的名称以及 data.frame 中的值

    在下面的代码中 j是 data frames 的命名列表 我想知道是否有办法 a 提取变量的数值 即one short and one long 在 data frames 内并附加它们的相关名称 即 AAA or BBB or CCC 到
  • 将 Python Pandas DataFrame 写入 Word 文档

    我正在努力创建一个使用 Pandas DataFrames 的 Python 生成的报告 目前我正在使用DataFrame to string 方法 但是 这会作为字符串写入文件 有没有办法让我实现这一目标 同时将其保留为表格 以便我可以使
  • 查找与另一列 Pandas 中的唯一值关联的列中的值的交集

    如果我有一个像这样的数据框 非常小的例子 col1 col2 0 a 1 1 a 2 2 b 1 3 b 2 4 b 4 5 c 1 6 c 2 7 c 3 我想要所有的交集col2当价值观与其独特性相关时col1值 因此在这种情况下 交集
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • 类型错误:此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy

    这是什么错误 回溯错误 C Users DELL PycharmProjects MyNew venv Scripts python exe C Users DELL PycharmProjects MyNew agaaaaain py T
  • 如何获取分类数据的分组条形图

    I have a big dataset with information about students And I have to build a graph of dependencies between different value
  • 如何按 pandas 中的值对系列进行分组?

    我现在有一只熊猫Series与数据类型Timestamp 我想按日期对其进行分组 并且每组中有许多行具有不同的时间 看似显而易见的方法类似于 grouped s groupby lambda x x date 然而 熊猫的groupby按索

随机推荐