【问题标题】:Use pd.to_datetime for a column/pandas.series over all rows which are in list format将 pd.to_datetime 用于列表格式的所有行的列/pandas.series
【发布时间】:2018-03-24 15:00:35
【问题描述】:

我已经尝试解决我的问题好几个小时了,但不知何故我没有得到正确的解决方案。 我有一个 pandas 数据框,其中包含一列日期,这些日期又存储为每一行的列表。

df['date']=pd.to_datetime(df["date"]) 

给我错误:unhashable type: 'list'

我的数据框如下所示:

0    [February 28, 2013 Thursday]
1       [November 2, 2012 Friday]
2         [July 31, 2012 Tuesday]
3         [May 10, 2012 Thursday]
4       [June 23, 2004 Wednesday]

因此,每一行都是一个列表,但每个列表只包含一个字符串。我想将每一行中的这个字符串转换为数据框中的日期时间格式(就像 02-28-2013),以便我可以执行日期操作。

如何以可以执行 pd.to_datetime 命令的方式转换列?

非常感谢!!

【问题讨论】:

    标签: python-3.x pandas datetime


    【解决方案1】:

    我这样创建我的 DataFrame:

    import pandas as pd
    df = pd.DataFrame(columns=['date'])
    df['date']=pd.to_datetime(df["date"]) 
    df.date=[['01-01-2013'], ['2-2-2015'], ['July 31, 2012']]
    

    我曾经写过一些随机日期,但它也是一个带有列表的熊猫。

    >>> df.date
    0       [01-01-2013]
    1         [2-2-2015]
    2    [July 31, 2012]
    

    您必须访问列表中的元素,因此只需使用 lambda 函数

    pd.to_datetime(df.date.apply(lambda x: x[0]))
    
    >>> df.date
    0   2013-01-01
    1   2015-02-02
    2   2012-07-31
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-13
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多