如何使用Excel和Python将3列连接成1列?

如何使用Excel和Python将3列连接成1列?,python,excel,openpyxl,Python,Excel,Openpyxl,我正在GIS软件中进行一个项目,其中我需要一个包含YYYY-MM-DD格式日期的列。目前,在Excel中,我有3个列:1个是年份,1个是月份,1个是日期。看起来像这样: | A | B | C | | 2012 | 1 | 1 | | 2012 | 2 | 1 | | 2012 | 3 | 1 |

我正在GIS软件中进行一个项目,其中我需要一个包含YYYY-MM-DD格式日期的列。目前,在Excel中,我有3个列:1个是年份,1个是月份,1个是日期。看起来像这样:

|     A    |     B     |      C     |
|   2012   |     1     |      1     |
|   2012   |     2     |      1     |
|   2012   |     3     |      1     |
             ...etc...
|     A     |
| 2012-01-01|
| 2012-02-01|
| 2012-03-01|
我需要它看起来像这样:

|     A    |     B     |      C     |
|   2012   |     1     |      1     |
|   2012   |     2     |      1     |
|   2012   |     3     |      1     |
             ...etc...
|     A     |
| 2012-01-01|
| 2012-02-01|
| 2012-03-01|
我有几本相同格式的工作簿,所以我想python可能是一个有用的工具,这样我就不必手动连接Excel中的所有内容

所以,我的问题是,有没有一种简单的方法不仅可以连接这三列,还可以在月数和日数前面加一个零


我对python库openpyxl进行了一些实验,但到目前为止还没有找到任何有用的东西。任何帮助都将不胜感激,谢谢

如果您打算留在excel中,您也可以使用excel宏脚本。如果您的年、月和日位于
A
B
C
列中,您只需在
D列中键入这些内容即可将它们串联起来,然后将其格式化为日期并调整填充

=$A1 & "-" & $B1 & "-" & $C1
试试这个:

  def DateFromABC(self,ws):
    import datetime

    # Start reading from row 1
    for i,row in enumerate(ws.rows,1):
      sRow = str(i)
      # datetime goes into column 'D'
      Dcell = ws['D'+sRow]

      # Set datetime from 'ABC'
      Dcell.value = datetime.date(year=ws['A'+sRow].value,
                                  month=ws['B'+sRow].value,
                                  day=ws['C'+sRow].value
                                  )
      print('i=%s,tpye=%s, value=%s' % (i,str(type(Dcell.value)),Dcell.value ) )
    #end for
  #end def DateFromABC

使用Python:3.4.2-openpyxl:2.4.1-LibreOffice:4.3.3.2进行测试

您可以使用
.zfill(2)
在月/日之前添加一个零。使用openpyxl这很容易做到。到目前为止,您尝试了什么。Excel的datetime支持实际上非常差。使用类似Python的东西将日期转换为日期可能会很有意义。@CharlichtLark OP希望保留在excel中,因此即使您使用Python进行字符串连接,日期时间仍然需要保留在excel中。我想您是在猜测OP谁需要提供更多代码。特别是如果有很多文件,在不将所有内容加载到Excel的情况下执行此操作是有意义的。