使用'datetime64 [ns]'格式从pandas dataframe

时间:2017-04-04 17:27:56

标签: python pandas

我有一个数据框,其元素为:

df1[1:4]
                   Sims
2014-01-02  [51, 53, 51, 3...
2014-01-03  [56, 48, 64, ...
2014-01-04  [57, 45, 47, ...

sims是每个500个元素的列表。

我有另一个数据框:

df2[1:4]
                          Date  Month  Day   HE    Year
DateTime                                               
2012-01-01 02:00:00 2012-01-01    1.0  1.0  2.0  2012.0
2012-01-01 03:00:00 2012-01-01    1.0  1.0  3.0  2012.0
2012-01-01 04:00:00 2012-01-01    1.0  1.0  4.0  2012.0

我正在尝试以下各种配置:

df1[df2['Date']]

但它错误地抱怨df1索引和df2['Date']之间的时间格式差异。但是,两者的格式相同,如下所示。

df1.index[1:4]
DatetimeIndex(['2014-01-02', '2014-01-03', '2014-01-04'], dtype='datetime64[ns]', freq=None)


    df2['Date'][1:4].values
array(['2012-01-01T00:00:00.000000000', '2012-01-01T00:00:00.000000000',
       '2012-01-01T00:00:00.000000000'], dtype='datetime64[ns]')

如何进行以下工作:

df1[df2['Date']]

编辑: 错误讯息:

KeyError: "['2012-01-01T00:00:00.000000000' '2012-01-01T00:00:00.000000000'\n '2012-01-01T00:00:00.000000000' ..., '2016-12-31T00:00:00.000000000'\n '2016-12-31T00:00:00.000000000' '2016-12-31T00:00:00.000000000'] not in index"

1 个答案:

答案 0 :(得分:2)

如果您尝试对行而不是列进行索引,那么

df1[df2['Date']]类型的索引往往会出错。问题可能是你让pandas猜测你要切割的轴,这并不总是按照需要进行。

您可以尝试使用更明确的索引方法,例如df1.loc[df2['Date'], :]df1.xs(df2['Date'], 0)