在Python中将不需要的日期时间格式的数据值更改为带破折号的数字

时间:2019-02-10 02:21:50

标签: python python-3.x pandas datetime dataframe

我的数据由于某些Excel格式问题而被更改。当-中包含一个数字时,它会自动更改为日期格式。

例如,在Excel中,1-1更改为01-Jan25-2更改为25-Feb

但是带有破折号或其他值(如1A1001的数据是完整的。当我将数据加载到Spyder中时,它实际上再次将格式更改为datetime类型。

首先,数据在 Excel 中如下所示:

Name       ID       Value
Hello      1A       22
Hi         01-Jan   20
What       02-Jan   12
Is         1001     10
Up         25-Mar   11

数据以Python的当前年份(2019)的 Pandas Dataframe 格式显示,代码如下:

import pandas as pd
FAC_sheet = pd.read_excel('data', dtype=str)

Name       ID                    Value
Hello      1A                    22
Hi         2019-01-01 00:00:00   20
What       2019-01-02 00:00:00   12
Is         1001                  10
Up         2019-03-25 00:00:00   11

有没有一种方法可以仅更改日期格式奇怪的值并使其余部分保持不变?所需的输出是:

Name       ID                    Value
Hello      1A                    22
Hi         1-1                   20
What       1-2                   12
Is         1001                  10
Up         3-25                  11

1 个答案:

答案 0 :(得分:0)

您可以尝试通过以下方法尝试并替换熊猫中的Date行为自动转换(将Date替换为列名):

pandas.read_excel(xlsx, sheet, converters={'Date': str})

从文档(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_excel.html): 转换器:dict,可选 用于转换某些列中的值的函数的字典。键可以是整数或列标签。