我有一个熊猫数据框df
,其列类型为pandas.Timestamp
,我需要将其转换为列表列表(每行的列表)。当我使用df.values
时,我会得到一个列表列表,但是类型转换为datetime64
,这会在以后的代码中引起问题。示例:
import pandas as pd
pd.DataFrame([pd.Timestamp('2020-01-01')]).values
Out[259]: array([['2020-01-01T00:00:00.000000000']], dtype='datetime64[ns]')
如果我在每列上分别使用pandas.Series.to_list
,则类型将保留:
pd.DataFrame([pd.Timestamp('2020-01-01')])[0].to_list()
Out[261]: [Timestamp('2020-01-01 00:00:00')]
但是,如果我有多个列,这会带来不便,因为我需要将其应用于每列并使用zip
来获取时间戳列表列表。
是否有更直接的方法可以在不进行类型转换的情况下获取值?
答案 0 :(得分:1)
您可以使用to_dict方法将东方指定为列表
df = pd.DataFrame([ { 'a' : pd.Timestamp('2020-01-01') , 'b' : pd.Timestamp('2020-01-01')}] )
In [55]: df
Out[55]:
a b
0 2020-01-01 2020-01-01
In [56]: list(df.to_dict('list').values())
Out[56]: [[Timestamp('2020-01-01 00:00:00')], [Timestamp('2020-01-01 00:00:00')]]