问题:Pandas - 对 datetime64[ns] 列进行切片会返回 19 位整数的列表

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

我正在尝试将数据框中的一列日期转换为列表,但是当我对其进行切片时,发生了一些事情,将日期转换为 19 位整数。

这是原始 df 以及列 dtypes:

          CalendarDate  BusinessDay
    2   2022-05-04            1
    3   2022-05-03            1
    4   2022-05-02            1
    5   2022-04-29            1
    6   2022-04-28            1
    7   2022-04-27            1
    8   2022-04-26            1
CalendarDate    datetime64[ns]
BusinessDay              int64
dtype: object

这是将数据框列转换为列表的函数:

def slice_single_dataframe_column_into_list(dataframe, column_name):
     sliced_column = dataframe.loc[:,[column_name]].values.tolist()
     print(sliced_column)
     column_list = []
     for element in sliced_column:
         column_list.append(element)
     return column_list

这是列切片后打印的内容:

[[1651622400000000000], [1651536000000000000], [1651449600000000000], [1651190400000000000], [1651104000000000000], [1651017600000000000], [1650931200000000000]]

我尝试将该 int 转换为时间戳,但我得到“无效参数”。我只是不确定这里发生了什么。我希望列表中的项目看起来与数据框中的完全相同。

python pandas datetime pandas-loc
1个回答
0
投票

pd.to_datetime('1970-01-01').value
返回UNIX时间戳,
df[datetimecolumn].values.tolist()
似乎直接返回UNIX时间戳。

您可以直接拨打系列上的

tolist
来避免。

def slice_single_dataframe_column_into_list(dataframe, column_name):
     sliced_column = dataframe[column_name].tolist()
     # ^^ Changes here
     column_list = []
     for element in sliced_column:
         column_list.append(element)
     return column_list
© www.soinside.com 2019 - 2024. All rights reserved.