簡體   English   中英

使用Pandas的Assign和Lambda函數將蘭特添加到每一行

[英]Add a Rand to each row using Pandas' Assign and a Lambda Function

如何將隨機數傳遞給lambda函數,以便熊貓assign可以使用我向每行添加不同的隨機數。

我最初的嘗試

df = pd.DataFrame({'cat': [1]*10 + [0]*10,
                   'value': [3]*5 + [2]*5 + [2]*2 + [3]*8})

df.assign(cat=lambda df: df.cat + np.random.rand(1)).head(3)

Out[1]:
     cat        value
0   1.962857    3
1   1.962857    3
2   1.962857    3

我們在這里看到隨機數0.962857已添加到所有行。 但是我希望每一行都有不同的rand 我怎樣才能做到這一點?

更改1 ,因為按DataFramelength將標量返回數組:

print (np.random.rand(1))
[ 0.88642869]

print (np.random.rand(len(df)))

[ 0.42677701  0.89968857  0.87976326  0.07758206  0.43617027  0.03221375
  0.46398119  0.14226246  0.14237448  0.22679517  0.60271752  0.85003435
  0.5676184   0.87565266  0.89830548  0.27066452  0.23907483  0.73784657
  0.09083235  0.98984701]

df = df.assign(cat=lambda df: df.cat + np.random.rand(len(df))).head(3)
print (df)
        cat  value
0  1.886429      3
1  1.426777      3
2  1.899689      3

暫無
暫無

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

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