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
是一个值。
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
是一个值。