如何使用Excel和Python将3列连接成1列?
我正在GIS软件中进行一个项目,其中我需要一个包含YYYY-MM-DD格式日期的列。目前,在Excel中,我有3个列:1个是年份,1个是月份,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 |
| 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的情况下执行此操作是有意义的。