python - 如何将列表中的随机值分配给 Pandas 数据框中的列?

标签 python pandas loops random

我在 Bigquery 中使用 Python,并且有一个大数据框 df(大约 700 万行)。我还有一个列表 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

应用解决方案,首先定义我的函数然后调用它:

def random_day():
  rand_day = sample(day_list,1)[0]
  return day

df["rand_day"] = df.apply(lambda row: random_day())

有什么建议吗? 谢谢

最佳答案

使用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

关于python - 如何将列表中的随机值分配给 Pandas 数据框中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54367361/

相关文章:

javascript - 一次对数组的所有值使用 .addEventListener

python - 如何在给定两个属性的对象列表中找到对象的索引?

python - 如何使用计算数据创建历史数据框?

c++ - 了解循环C++中的循环

python - Pandas : Sum multiple columns and get results in multiple columns

python - 将包含 UTF-8 和 Null 的 DataFrame 转换为字符串而不丢失数据

c++ - OpenMP 还原同步错误

Python:如何生成在随机位置具有非零条目的向量?

javascript - NODEJS SMB2 - 将缓冲区转换为日期和时间

python - 在 Python Pandas 中以长格式追加列表元素