python - 如何仅提取时代细节并将其他内容留在 pandas 数据框中?

标签 python python-3.x pandas datetime epoch

我有一个包含 时间 的数据集。我需要提取纪元 time 并将其转换为正常的 DD MM YYYY 格式以及 HH: MM 格式的时间详细信息。 专栏是这样的:-

Index       Date                                                                  
0        {'$date': {'$numberLong': '1562005805010'}}   

我尝试过使用正则表达式、提取和替换方法,但它们将日期列转换为 NaN

df1['date'] = df1['date'].str.extract('(\d+)', expand=False)

我只想显示纪元,以便将它们转换为日期和时间。 Here is the column that I have

最佳答案

如果值是字符串,首先通过 ast.literal_eval 将其转换为字典,然后选择:

print (type(df['Date'].iat[0]))
<class 'str'>

import ast

s = df['Date'].apply(lambda x: ast.literal_eval(x)['$date']['$numberLong'])

如果值是嵌套的字典,只能通过键选择:

print (type(df['Date'].iat[0]))
<class 'dict'>

s = df['Date'].apply(lambda x: x['$date']['$numberLong'])

最后一次使用 to_datetime使用 unit 参数:

print (s)
0    1562005805010
Name: Date, dtype: object

df['Date'] = pd.to_datetime(s, unit='ms')
print (df)
   Index                    Date
0      0 2019-07-01 18:30:05.010

关于python - 如何仅提取时代细节并将其他内容留在 pandas 数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052669/

相关文章:

python - 使用 pip install 包时 "Building wheel for xxx"是什么意思?

python - 将 pandas 中的行拆分为多行

python - 检查文本在 python 中是否右对齐

python - 对齐 pandas 中的时间序列

python - 从排序列表中获取大于给定数字的第一个元素

python - scrapy css选择器链如何表示当前节点?

python - Pandas :将一列与数据框的所有其他列进行比较

python - 交换 2+ 字串中的字母

django - 与 factory boy 和 pytest 一起使用的自定义 faker 提供程序

python - 如何使用beautifulsoup检查字符串是否存在