gpt4 book ai didi

python - 如何创建具有格式化日期的稀疏列

转载 作者:太空宇宙 更新时间:2023-11-04 04:22:00 29 4
gpt4 key购买 nike

我有一个时间序列数据集,索引为日期时间(一年中的每一天几乎有 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)。有办法做到这一点吗?

最佳答案

问题是您作业的左右两侧大小不同。相反,您可以使用 pd.Index.where同时分配和屏蔽:

df['str_date'] = df.index.where(df.index.day == 1)

print(df)
# str_date
# obs_date
# 2018-01-01 2018-01-01
# 2018-01-02 NaT
# 2018-01-03 NaT
# 2018-01-04 NaT
# 2018-01-05 NaT
# 2018-01-06 NaT
# 2018-02-01 2018-02-01

如果需要特定的字符串格式,可以调用strftime关于结果:

df['str_date'] = df.index.where(df.index.day == 1).strftime('%b-%Y')

print(df)
# str_date
# obs_date
# 2018-01-01 Jan-2018
# 2018-01-02 NaT
# 2018-01-03 NaT
# 2018-01-04 NaT
# 2018-01-05 NaT
# 2018-01-06 NaT
# 2018-02-01 Feb-2018

关于python - 如何创建具有格式化日期的稀疏列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294957/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com