Pandas tolist() 函数正在更改默认日期时间格式值

Pandas tolist() function is changing default Date time format values

假设我有一个具有这样日期值的数据框,它是 pandas 对象数据类型。

当我应用 get_date 函数时,它的值被更改为日期时间格式。

当我取唯一值时,值保持不变。

但是当我使用 unique 并将其转换为列表时,它会更改 default/original 值。

.apply(get_date) 函数看起来像这样,

预料之中,如果勾选Series.unique:

Returns
ndarray or ExtensionArray
The unique values returned as a NumPy array. See Notes.

因此,如果添加 tolist,它会使用 numpy.ndarray.tolist 查看原生日期时间格式的 numpy 数组:

rng = pd.date_range('2017-04-03', periods=3)
a = pd.DataFrame({'DATEDATACHANGED': rng.append(rng) })  
print (a)
  DATEDATACHANGED
0      2017-04-03
1      2017-04-04
2      2017-04-05
3      2017-04-03
4      2017-04-04
5      2017-04-05

print (a['DATEDATACHANGED'].unique())
['2017-04-03T00:00:00.000000000' '2017-04-04T00:00:00.000000000'
 '2017-04-05T00:00:00.000000000']

print (a['DATEDATACHANGED'].unique().tolist())
[1491177600000000000, 1491264000000000000, 1491350400000000000]

如果想将 Series 转换为列表使用 pandas.Series.tolist:

print (a['DATEDATACHANGED'].tolist())
[Timestamp('2017-04-03 00:00:00'), Timestamp('2017-04-04 00:00:00'), 
 Timestamp('2017-04-05 00:00:00'), Timestamp('2017-04-03 00:00:00'), 
 Timestamp('2017-04-04 00:00:00'), Timestamp('2017-04-05 00:00:00')]

对于唯一值添加 Series.drop_duplicates:

print (a['DATEDATACHANGED'].drop_duplicates().tolist())
[Timestamp('2017-04-03 00:00:00'), Timestamp('2017-04-04 00:00:00'), 
 Timestamp('2017-04-05 00:00:00')]