【问题标题】:can't multiply sequence by non-int of type 'float' for datetime对于日期时间,不能将序列乘以“浮点”类型的非整数
【发布时间】:2022-01-26 17:36:15
【问题描述】:

from datetime import datetime
import pandas as pd
from datetime import timedelta

df = pd.read_csv("dataset.csv")

child_dict = {'date_of_birth', 'sex', 'weight' , 'height' }

for i, row in df.iterrows():
    child_dict["date_of_birth"] = row["Admissiondate"][i] - timedelta(days=(row["Age(Month)"][i] *30.4374))
    child_dict["sex"] = row["Sex"][i]
    child_dict["weight"] = row["Kg"][i]
    child_dict["height"] = row["Cm"][i]

我想编写这段代码,但我无法完全进步。 我的入学日期数据类似于“dd-mm-yyyy”

入学日期 == Hastane yatış

我也使用了 pd.astype("str") 函数作为录取日期,但我认为它想要这个数字。

我该如何改进。

这就是我的数据集预览

【问题讨论】:

  • 你最终想要达到什么目的?通常,要进行 timedelta 算术,您必须将字符串解析为 datetime 数据类型。例如df["Admissiondate"] = pd.to_datetime(df["Admissiondate"], dayfirst=True)
  • 接下来一般的事情是你基本上想要摆脱 for 循环并使用 pandas 系列,而不是单个元素。就像我在上面的评论中一样,使用 pd.to_datetime。如果您的最终结果应该是 dict,您仍然可以在最后将 df 转换为 dict。

标签: python pandas datetime timedelta


【解决方案1】:

试试这个,你需要将天数乘以数字而不是纯日期

child_dict["date_of_birth"] = row["Admissiondate"][i] - timedelta(days=(row["Age(Month)"][i])*30.4374)

【讨论】:

  • 谢谢(斯帕西博)。我再次遇到同样的错误;不能将序列乘以“float”类型的非整数
猜你喜欢
  • 2011-04-06
  • 2012-09-17
  • 2018-12-19
  • 1970-01-01
  • 2013-09-11
  • 2015-06-27
  • 1970-01-01
相关资源
最近更新 更多