gpt4 book ai didi

python - 基于 pandas 一定范围的随机日期

转载 作者:行者123 更新时间:2023-12-01 08:52:30 28 4
gpt4 key购买 nike

我的 main_csv.csv 文件看起来像

Client_ID     Frequency
123AASD45 10
2345OPU78 9
763LKJ90 2

这里我的频率是日期的数量,例如如果频率是10,则在我的第一季度工作日内(2018年1月-2018年3月)必须与客户会面10次我想要的输出应该是这样的

Client_ID    Dates_Reached
123AASD45 01/05/2018 /* random dates */
123AASD45 01/08/2018
...............

我应该使用循环还是其他更好的方法来完成此任务?我尝试过像下面这样

df=read_csv('main_csv.csv',delimiter='|')

for rows in df:
i=0
#generate random date
i=i+1
if (i==df['Frequency']):
break

最佳答案

首先定义一个函数 date_range,它接受开始日期和结束日期以及样本大小并返回样本。

import pandas as pd
df = pd.DataFrame({'client':['123AASD45', '2345OPU78', '763LKJ90'], 'frequency':[10,9,2]})

def date_range(n, start='1/1/2011', end='4/1/2011'):
date_range = pd.date_range(start, end)
return list(pd.Series(date_range).sample(n))

然后,为每个客户分配日期样本并进行一些数据 reshape ,以便您可以与原始表连接。

df['dates'] = df['frequency'].apply(lambda x: date_range(x))
df_dates = df['dates'].apply(pd.Series).reset_index()
df_dates = df_dates.melt(id_vars='index').dropna().drop(['variable'], axis=1).set_index('index')

最后,假设每个客户端有一行,加入原始数据集。

df.join(df_dates)

关于python - 基于 pandas 一定范围的随机日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53022685/

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