【问题标题】:How do I get rid of TypeError: strptime() argument 1 must be str, not float in read_csv?如何摆脱 TypeError:strptime() 参数 1 必须是 str,而不是在 read_csv 中浮动?
【发布时间】:2021-04-28 00:41:39
【问题描述】:

我正在尝试将 2 列(1 和 2)解析为日期时间,同时我还读取了 csv 文件的第 6 列和第 12 列。代码如下。由于某种原因,我收到以下错误:

TypeError: strptime() 参数 1 必须是 str,而不是 float

date_parse = lambda d,t: datetime.strptime(
                                           d+t,
                                           "%d/%m/%Y%H:%M:%S"
                                           )


data_frame = pd.read_csv(
              full_path_file_name, sep=";",
              header=0,
              usecols=[1, 2, 6, 12],
              skiprows=6,
              parse_dates={'datetime': ['Date','Time']},
              date_parser=date_parse
              )

有没有人有任何建议来摆脱这个错误?

您可以查看dataset 谢谢

【问题讨论】:

  • 你必须在你的 lambda 函数中添加一个打印,这样你才能看到 csv 的哪一行产生了错误,然后发布该行。
  • 如何在此处添加打印语句?我不明白你的意思。
  • 为什么要在 lambda 函数中写 d,t?
  • d 代表日期,t 代表时间我写了 d 和 t,因为日期和时间位于两个不同的列中:csv 文件的第 1 列和第 2 列。
  • 请删除您的 lambda 函数并将其添加到您的代码中:def date_parse(d, t): print(d, t); return datetime.strptime(d+t, "%d/%m/%Y%H:%M:%S")

标签: python pandas


【解决方案1】:

像这样更改你的代码

                                    )
def date_parse(d, t):
    dt = d+ " " +t
    return pd.to_datetime(dt)


data_frame = pd.read_csv(
              full_path_file_name, sep=";",
              header=0,
              usecols=[1, 2, 6, 12],
              skiprows=6,
              parse_dates={'datetime': ['Date','Time']},
              date_parser=date_parse
              )

【讨论】:

  • 我不明白的一件事是使用usecols。当您的数据集中只有 2 列时,为什么要使用不必要的列?使用usecols=['Date','Time']
  • 如果按照您的建议进行操作,我会得到以下输出:HelloTypeError: () 需要 1 个位置参数,但给出了 2 个
  • 回答:“当数据集中只有 2 列时,为什么要使用不必要的列?”---->我也有第 6 列和第 12 列的数据,但我认为不是与这个问题有关。无论如何,我只是用 usecols=['Date','Time'] 替换了 usecols=[1, 2, 6, 12] 并且得到了相同的输出: TypeError: () takes 1 positional argument but 2 were given
  • @goahead97 那么你能展示一下 d+t 结果实际上是什么吗?
  • d+t 数组(['28/06/201812:38:36', '28/06/201812:35:38', '28/06/201812:21:39', ..., '07/05/201817:14:00', '07/05/201817:09:00', '07/05/201817:04:00'], dtype=object) d array([' 28/06/2018', '28/06/2018', '28/06/2018', ..., '07/05/2018', '07/05/2018', '07/05/2018' ], dtype=object)
猜你喜欢
  • 2021-07-11
  • 2017-12-19
  • 2017-10-21
  • 2020-04-02
  • 1970-01-01
  • 2020-07-11
  • 2019-03-15
  • 1970-01-01
  • 2018-09-04
相关资源
最近更新 更多