BFT*_*FTM 14 python dataframe pandas reindex
是否可以DataFrame使用由datetime对象组成的列重新编制大熊猫的索引?
我有一个包含df以下列的DataFrame :
Int64Index: 19610 entries, 0 to 19609
Data columns:
cntr 19610 non-null values #int
datflt 19610 non-null values #float
dtstamp 19610 non-null values #datetime object
DOYtimestamp 19610 non-null values #float
dtypes: int64(1), float64(2), object(1)
Run Code Online (Sandbox Code Playgroud)
我可以df轻松地重新索引以及DOYtimestamp:df.reindex(index=df.dtstamp)
并DOYtimestamp具有以下值:
>>> df['DOYtimestamp'].values
array([ 153.76252315, 153.76253472, 153.7625463 , ..., 153.98945602,
153.98946759, 153.98947917])
Run Code Online (Sandbox Code Playgroud)
但我想重新索引dtstamp由datetime对象组成的DataFrame ,以便我直接从索引生成不同的时间戳.该dtstamp列的值如下所示:
>>> df['dtstamp'].values
array([2012-06-02 18:18:02, 2012-06-02 18:18:03, 2012-06-02 18:18:04, ...,
2012-06-02 23:44:49, 2012-06-02 23:44:50, 2012-06-02 23:44:51],
dtype=object)
Run Code Online (Sandbox Code Playgroud)
当我尝试重新索引时df,dtstamp我得到以下内容:
>>> df.reindex(index=df.dtstamp)
TypeError: can't compare datetime.datetime to long
Run Code Online (Sandbox Code Playgroud)
我只是不确定我需要做什么让索引成为日期时间类型.有什么想法吗?
Bre*_*arn 26
听起来你不想要重新索引.有点令人困惑reindex的不是确切地定义新索引; 相反,它查找具有指定索引的行.因此,如果您有一个带索引的DataFrame [0, 1, 2],那么执行a reindex([2, 1, 0])将以相反的顺序返回行.做类似的事情reindex([8, 9, 10])不会为行创建新索引; 相反,它将返回一个带有NaN值的DataFrame ,因为没有索引为8,9或10的行.
看起来你想要的只是保持相同的行,但为它们创建一个全新的索引.为此,您可以直接分配给索引.所以试试吧df.index = df['dtstamp'].