在Pandas / Python中创建函数以迭代数据帧并将纪元毫秒转换为日期时间

问题描述 投票:1回答:1

我正在尝试编写一个函数,该函数接受毫秒数据的熊猫数据帧,并将其转换为日期时间。但是我得到一个错误的名字:AttributeError:“ numpy.int64”对象没有属性“ iat”

现在,我搜索了.iat调用用于访问pandas数据框内的元素。

数据帧包含以下内容:

Time
1561912331018.00
1561912721486.00
1561977388732.00
1561899755951.00
1561897193639.00
1561982246953.00
1561977096883.00
1561919518921.00
1561942255704.00
1561939827253.00
1561965861054.00
1561960122342.00
1561949100949.00
1561962949812.00
def epoch_converter(data):

    for number , row_value in data.iteritems():

        number = data.loc[number].iat[0]
        import datetime
        number = number / 1000.0
        val = datetime.datetime.fromtimestamp(number).strftime('%Y-%m-%d %H:%M:%S.%f')
        print(val)


epoch_converter(time_val.Time)
r dataframe datetime epoch
1个回答
0
投票

这里是一种方法。

import datetime as dt
import pandas as pd


data = {
    "Time": [1561912331018.00, 1561912721486.00, 1561977388732.00, 1561899755951.00],
    "A": ["a", "b", "c", "d"],
}

df = pd.DataFrame(data)


def parse_millisecond_timestamp(ts: int) -> str:
    """Convert ms since Unix epoch to UTC datetime instance."""
    return dt.datetime.fromtimestamp(ts / 1000, tz=dt.timezone.utc).strftime(
        "%Y-%m-%d %H:%M:%S.%f"
    )

print(df)

           Time  A
0  1.561912e+12  a
1  1.561913e+12  b
2  1.561977e+12  c
3  1.561900e+12  d

# apply conversion to the 'Time' column
df["Time"] = df["Time"].apply(parse_millisecond_timestamp)

print(df)

                         Time  A
0  2019-06-30 16:32:11.018000  a
1  2019-06-30 16:38:41.486000  b
2  2019-07-01 10:36:28.732000  c
3  2019-06-30 13:02:35.951000  d
© www.soinside.com 2019 - 2024. All rights reserved.