Pandas DataFrame索引 - 仅限月和日

时间:2016-10-25 20:15:41

标签: python pandas

我希望DataFrameDatetimeIndex,但我只想要几个月和几天;不是几年。我希望它看起来如下:

(index)  (values)
01-01    56.2
01-02    59.6
...
01-31    62.3
02-01    61.6
...
12-31    44.0

我尝试创建date_range,但这似乎需要年份输入,所以我似乎无法弄清楚如何实现上述目标。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

In [78]: df = pd.DataFrame({'val':np.random.rand(10)}, index=pd.date_range('2000-01-01', freq='10D', periods=10))

In [79]: df
Out[79]:
                 val
2000-01-01  0.422023
2000-01-11  0.215800
2000-01-21  0.186017
2000-01-31  0.804285
2000-02-10  0.014004
2000-02-20  0.296644
2000-03-01  0.048683
2000-03-11  0.239037
2000-03-21  0.129382
2000-03-31  0.963110

In [80]: df.index.dtype_str
Out[80]: 'datetime64[ns]'

In [81]: df.index.dtype
Out[81]: dtype('<M8[ns]')

In [82]: df.index = df.index.strftime('%m-%d')

In [83]: df
Out[83]:
            val
01-01  0.422023
01-11  0.215800
01-21  0.186017
01-31  0.804285
02-10  0.014004
02-20  0.296644
03-01  0.048683
03-11  0.239037
03-21  0.129382
03-31  0.963110

In [84]: df.index.dtype_str
Out[84]: 'object'

In [85]: df.index.dtype
Out[85]: dtype('O')

注意:索引dtype现在是一个字符串(对象)

当然,你可以一步完成,如果你需要:

In [86]: pd.date_range('2000-01-01', freq='10D', periods=5).strftime('%m-%d')
Out[86]:
array(['01-01', '01-11', '01-21', '01-31', '02-10'],
      dtype='<U5')