Pandas,分配给新数据帧时时间戳变为整数(长)

Pandas, Timestamp becomes integer (long) when assigning to new data frame

df1 有时间戳列:

df1.dtypes

...
Date datetime64[ns]
...

df2 是一个新的数据框:

df2 = pd.DataFrame(columns=[...], index=[...])

我遍历行,并在某些时候,分配一个从 df1 到 df2 的时间戳:

for i, row in df1.iterrows():
    ...
    df2['Date'] = row.Date
    ...

但是时间戳在分配后以整数结尾...

type(row.Date)
# <class 'pandas.tslib.Timestamp'>

type(df2['Date'][loc-I-assigned]) 
# <type 'long'> 

我该如何解决这个问题?

这是pandas的bug,1.x版本似乎不会修复,只能自己处理了。 Pandas Github bug ticket

但是你可以自己转换。 假设series是pd.Series的一个对象,你可以 series['Date'] = row.Date series['Date'] = pd.to_datetime(series['Date']) 实际上,我认为您的代码也有问题,df2['Date'] 是一个系列,但 row.Date 是一个值。