首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将日期作为字符串添加到Pandas数据帧

将日期作为字符串添加到Pandas数据帧
EN

Stack Overflow用户
提问于 2020-06-26 06:04:25
回答 1查看 139关注 0票数 0

我正在制作一个脚本来打印一些标签,并需要导入一个带有身份证号码和DOB的excell文件。DOB已经在电子表格中正确格式化,但当我将其导入到数据帧中时,它会将其转换为日期时间并添加时间戳。

电子表格输入

代码语言:javascript
运行
复制
IDS     DOB
1       10/21/18

然后是下面的代码

代码语言:javascript
运行
复制
df = pd.read_excel(file,sheetname = "Sheet1",dtype=str )

给出了此DataFrame输出

代码语言:javascript
运行
复制
IDS     DOB
1       2018-10-21 00:00:00

即使我告诉它作为字符串导入。

有些行没有don或注释,所以当我尝试使用apply函数时,比如

代码语言:javascript
运行
复制
df['DOB'] = df['DOB'].apply(lambda x: dt.datetime.strptime(x,'%D%M%Y'))

我得到了

代码语言:javascript
运行
复制
ValueError: unconverted data remains: -10-10 00:00:00

当我尝试的时候

代码语言:javascript
运行
复制
df['DOB'] = pd.to_datetime(df['DOB'],format="%m/%d/%Y")

它仍然输出为

代码语言:javascript
运行
复制
 2018-10-21 00:00:00
EN

回答 1

Stack Overflow用户

发布于 2020-06-26 08:04:55

如果所有日期都是字符串,那么可以将其转换为日期时间,并再次将其格式化为字符串

代码语言:javascript
运行
复制
df['DOB'] = pd.to_datetime(df['DOB']).dt.strftime('%m/%d/%y')

最小工作示例

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({
    'IDS': [1],
    'DOB': ['2018-10-21 00:00:00'],
})
print(df)

df['DOB'] = pd.to_datetime(df['DOB']).dt.strftime('%m/%d/%y')
print(df)

如果还有其他字符串,那么当您尝试转换这些值并返回原始字符串时,您可能需要使用try/except来捕获错误的函数。

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({
    'IDS': [1, 2],
    'DOB': ['2018-10-21 00:00:00', 'Hello World'],
})
print('\n--- before ---\n')
print(df)

def convert(value):
    try: 
        return pd.to_datetime(value).strftime('%m/%d/%y')
    except Exception as ex:
        print(ex)
        
    return value
        
df['DOB'] = df['DOB'].apply(convert)
print('\n--- after ---\n')
print(df)

结果:

代码语言:javascript
运行
复制
--- before ---

   IDS                  DOB
0    1  2018-10-21 00:00:00
1    2          Hello World
('Unknown string format:', 'Hello World')

--- after ---

   IDS          DOB
0    1     10/21/18
1    2  Hello World

BTW:我没有测试用的convert()文件,但是如果你在read_excel中使用这个带有parse_dates的Excel文件,那么当你读取文件时,它就会转换它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62585031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档