【问题标题】:How to merge multiple datetime columns into one column in python?如何在python中将多个日期时间列合并为一列?
【发布时间】:2021-04-25 14:58:10
【问题描述】:

我有一个包含三个不同日期时间列的数据框,我想将它们合并为一列。尽管这些行在大多数情况下不重叠,但一个日期时间列有时会与第一个重叠,但是当它重叠时,它总是相同的日期,所以当我合并这两列时,我只想显示一个日期.

这是我的数据框的样子:

Form Date     Form Date.2   Form Date.3
2021-01-05                  
2021-02-05                  
                            2021-03-02
              2021-03-22    
2021-01-06    2021-01-06
                            2021-02-12
2021-01-09
              2021-02-19
2021-01-09    2021-01-09

我想要创建的是这样的:

Form Date     Form Date.2   Form Date.3   Merged Form Dates
2021-01-05                                2021-01-05 
2021-02-05                                2021-02-05   
                            2021-03-02    2021-03-02
              2021-03-22                  2021-03-22
2021-01-06    2021-01-06                  2021-01-06
                            2021-02-12    2021-02-12
2021-01-09                                2021-01-09
              2021-02-19                  2021-02-19
2021-01-09    2021-01-09                  2021-01-09

我试过df['Merged Form Dates'] = df['Form Date'] + df['Form Date.1']+ df['Form Date.2'],但它说我不能添加 datetimearray 和 datetimearray。我也试过df['Merged Form Dates'] = df.merge(df['Form Date]' + df['Form Date.1'] + df['Form Date.2']),但它说我只能将列表(而不是“DatetimeArray”)连接到列表中。

非常感谢您对这个问题的帮助!

【问题讨论】:

    标签: python pandas dataframe merge


    【解决方案1】:

    首先选择您需要的列:

    column=['Form Date','Form Date.1','Form Date.2']
    

    之后使用apply()方法和strip()方法:

    df['Merged Form Dates']=df[column].astype(str).apply(set,1).apply(''.join).str.strip('nan')
    

    现在,如果您打印 df,您将获得所需的输出:

    【讨论】:

    • 谢谢,我离答案越来越近了。但是,我在上面简化了我的数据框,当我应用您建议的解决方案时,我的数据框中还有许多其他具有不同数据类型的列正在合并。如何指定我要合并的唯一列是表单日期列?
    • 这似乎不起作用,当我指定一列时它会输出一些奇怪的数字。它似乎也不适用于多列,给我一个错误。
    • 你遇到了什么错误,你得到了什么奇怪的数字。?请告诉
    • 如果我指定一列 df['Form Date'],它将输出 1302-、1042-、012- 等。如果我指定多于一列,则会显示 KeyError: ('Form Date' , 'Form Date.2')
    • df.columns 的输出是什么?我认为这是由于列名中存在' '
    猜你喜欢
    • 2015-12-23
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2011-11-25
    • 2019-06-24
    相关资源
    最近更新 更多