簡體   English   中英

如何將列表中的隨機值分配給pandas數據框中的列?

[英]How to assign random values from a list to a column in a pandas dataframe?

我在Bigquery中使用Python,並且具有較大的數據框df(大約7m行)。 我還有一個列表lst,其中包含一些日期(例如,給定月份中的所有天)。

我試圖在df中使用每行lst中的隨機值創建一個附加列“ random_day”。

我嘗試運行循環並應用函數,但由於數據集很大,因此極富挑戰性。

我的嘗試通過了循環解決方案:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM