Jo *_*sta 7 python random loops pandas
我正在 Bigquery 中使用 Python 并且有一个大型数据帧 df(大约 7m 行)。我还有一个列表 lst 包含一些日期(比如给定月份中的所有天数)。
我正在尝试在 df 中创建一个附加列“random_day”,每行中都有一个来自 lst 的随机值。
我尝试运行一个循环并应用函数,但作为一个相当大的数据集,它被证明具有挑战性。
我的尝试通过循环解决方案:
df["rand_day"] = ""
for i in a["row_nr"]:
rand_day = sample(day_list,1)[0]
df.loc[i,"rand_day"] = rand_day
Run Code Online (Sandbox Code Playgroud)
和 apply 解决方案,首先定义我的函数,然后调用它:
def random_day():
rand_day = sample(day_list,1)[0]
return day
df["rand_day"] = df.apply(lambda row: random_day())
Run Code Online (Sandbox Code Playgroud)
关于这个的任何提示?谢谢
使用numpy.random.choice
并在必要时通过to_datetime
以下方式转换日期:
df = pd.DataFrame({
'A':list('abcdef'),
'B':[4,5,4,5,5,4],
})
day_list = pd.to_datetime(['2015-01-02','2016-05-05','2015-08-09'])
#alternative
#day_list = pd.DatetimeIndex(['2015-01-02','2016-05-05','2015-08-09'])
df["rand_day"] = np.random.choice(day_list, size=len(df))
print (df)
A B rand_day
0 a 4 2016-05-05
1 b 5 2016-05-05
2 c 4 2015-08-09
3 d 5 2015-01-02
4 e 5 2015-08-09
5 f 4 2015-08-09
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6896 次 |
最近记录: |