我需要在 python 数据框中添加一个新列,其中包含一月份的日期。每个日期在列中重复 24 次,无需任何干预。因此,条目总数将为 31*24 = 744 个条目。你能帮我编码这部分吗?
在 python 数据框中添加新的自定义列
数据挖掘
Python
熊猫
数据框
2022-03-09 13:10:30
1个回答
事实证明这很简单!有一个方便的方法调用repeat日期时间索引。以下是步骤:
import pandas as pd
定义日期范围,提供开始和结束
jan = pd.date_range(start="1-Jan-2018", end="31-Jan-2018") # could specify any year
现在提供您想要重复每个日期的次数并创建重复的列
num_repeats = 24
repeated_jans = jan.repeat(num_repeats)
让我们创建随机虚拟数据帧作为基础
total_dates = num_repeats * len(jan) # 24 x 31 = 744
df = pd.DataFrame(np.random.randint(0, 10, total_dates))
这就是我们添加列的方式 - 列的名称可以是任何内容
df['repeated_jans_lalala'] = repeated_jans
看看一些日期:
print(df.iloc[[0, 24, 48, 71, 72]]) # multiples of 24...we can see one repeated date
0 repeated_jans_lalala
0 7 2018-01-01
24 4 2018-01-02
48 3 2018-01-03
71 6 2018-01-03
72 3 2018-01-04
如果尝试将该列添加到具有不同行数的数据框中,我们会收到错误消息:
df_error = pd.DataFrame(np.random.randint(0, 10, 743)) # require 744!
#df_error['repeated_jans'] = repeated_jans # raises ValueError
如果要更改日期的外观,可以使用日期上的strftime方法
jans_fancy = jans.strftime('%d-%B-%y')
df['fancy_jans'] = jans_fancy
df.head()
0 repeated_jans_lalal fancy_jans
0 7 2018-01-01 01-January-18
1 2 2018-01-01 01-January-18
2 8 2018-01-01 01-January-18
3 9 2018-01-01 01-January-18
4 7 2018-01-01 01-January-18
如果您不想显示实际年份,请忽略该%y部分!
其它你可能感兴趣的问题