【问题标题】:Formating a calendar table to a datetime dataframe将日历表格式化为日期时间数据框
【发布时间】:2021-04-11 03:23:48
【问题描述】:

我有以下格式的日历数据:

        df = pd.read_csv('2021.txt', sep="  ")
        df.head()

我希望它是:

   Date       y
 2021-01-01 17:26
 2021-01-02 17:27
 2021-01-03 17:28
 2021-01-04 17:28
      ...
 2021-12-31 17:25

我已经搜索并没有发现类似的问题。我试图提供一个最小的例子,但不知道从哪里开始。我知道我必须使用 pandas.to_datetime 函数,但我什至不知道如何在这种情况下应用它,因为一切都是分开的。

【问题讨论】:

  • 最小的例子可以是你的2021.txt文件的前两行。

标签: python pandas datetime time timestamp


【解决方案1】:

使用DataFrame.meltto_datetimeerrros='coerce' 将错误的日期时间(如2021-02-30)转换为缺失值,然后通过DataFrame.dropna 删除此行:

df1 = df.melt('Day', var_name='Date', value_name='y')
df1['Date'] = pd.to_datetime('2021'  + df1['Date'] + df1.pop('Day').astype(str), 
                             format='%Y%b%d', errors='coerce')
df1 = df1.dropna(subset=['Date'])
print (df1)  
         Date      y
0  2021-01-01  17:28
1  2021-01-02  17:27
2  2021-01-03  17:28
3  2021-01-04  17:28
4  2021-01-05  17:29
..        ...    ...
67 2021-12-02  17:15
68 2021-12-03  17:15
69 2021-12-04  17:15
70 2021-12-05  17:15
71 2021-12-06  17:15

[72 rows x 2 columns]

【讨论】:

  • 谢谢,但我收到以下错误“melt() 有一个意外的关键字参数 'variable_name'
  • @Numbermind - 抱歉,我已经更改了。
  • 谢谢,我会尽快接受您的回答。您的代码的第一行有效。但是秒给了我错误“ValueError:day is out of range for month”
  • @Numbermind - 明白,所以答案已编辑。
  • 很抱歉再次打扰您。脚本的第二行不断给出错误。现在使用 'coere' 会出现以下错误:“AssertionError:”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 2020-08-07
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多