【问题标题】:How would I convert the minutes column of a pandas dataframe that goes above 59 to a proper datetime?如何将大于 59 的熊猫数据框的分钟列转换为正确的日期时间?
【发布时间】:2020-04-01 20:26:25
【问题描述】:

我有一个包含 2 列的 pandas 数据框:第一列是分钟,第二列是秒。它看起来像这样:

     min   s
0      0   0
1      0   1
2      0   2
3      0   3
4      0   4
5      0   5
6      0   6
7      0   7
8      0   8
9      0   9
10     0  10
11     0  11
12     0  12

我可以通过以下方式将其转换为日期时间:

l = []
for MinSec in list(zip(df['min'],df['s'])):
    l.append(':'.join(map(str,MinSec)))

pd.to_datetime(pd.Series(l), format='%M:%S')

但是,当 min 列达到 59 时,它会继续向上计数(60、61、62 等)。这会引发错误:

ValueError: time data '60:0' does not match format '%M:%S' (match)

我将如何处理此错误并将上述两列熊猫数据框成功加入日期时间?

【问题讨论】:

  • 可能是在添加小时列之前的一步。您可以使用模数和/或除法来获得分钟数。
  • 注意: 提问者从未回答任何问题,从未接受任何解决方案作为答案,从未对他人的任何帖子进行投票,也从未感谢社区的自愿帮助。他只关心自己的个人优势。

标签: python pandas dataframe datetime


【解决方案1】:

计算总秒数:

df['total_second']=60.*df['min']+df['s'] 

然后您可以将其转换为 Datetime :

pd.to_datetime(df['total_second'], unit='s')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2019-05-22
    • 2019-01-24
    • 2019-02-17
    • 2020-03-14
    • 2018-12-08
    相关资源
    最近更新 更多