【发布时间】:2019-06-15 03:18:09
【问题描述】:
我有一个时间序列数据集,索引为日期时间(一年中的每一天几乎有 1 行),我希望每隔一段时间创建一个带有字符串的稀疏序列(用于绘图)。
obs_date str_date
2018-01-01 Jan 2018
2018-01-02
2018-01-03
2018-01-04
2018-01-05
2018-01-06
...
2018-02-01 Feb 2018
etc
我试过了
df['str_date'] = df.index.strftime('%b\n%Y')
df.loc[df.index.day != 1, 'str_date'] = ''
并且可以正确设置当月的第一天,但是可以反过来尝试
df['str_date'] = ''
df.loc[df.index.day == 1, 'str_date'] = df.index.strftime('%b %Y')
给出错误: ValueError:无法将输入数组从形状 (350) 广播到形状 (11)。有没有办法做到这一点?
【问题讨论】:
-
您收到错误是因为
df.index.day == 1只有 11 个值,而您正尝试将这 11 个值设置为数据帧的 len 值。
标签: python pandas datetime indexing