Python 从数据帧中选择(并减去)

Python 从数据帧中选择(并减去),python,pandas,dataframe,Python,Pandas,Dataframe,我有一个非常简单的数据框架(portfolio_df),包含一个基本的投资组合,我希望能够出售/减去每个股票的随机数(基于数据框架的内容) 很容易从每个项目中减去10 portfolio_df["Number_of_shares"] -= 10 但是我不知道如何从MMM中减去0到420,从AXP中减去0到633,等等 portfolio_df["Number_of_shares"] -= random(0, portfolio_df["Number_of_shares"]) 屈服 TypeE

我有一个非常简单的数据框架(portfolio_df),包含一个基本的投资组合,我希望能够出售/减去每个股票的随机数(基于数据框架的内容)

很容易从每个项目中减去10

portfolio_df["Number_of_shares"] -= 10
但是我不知道如何从MMM中减去0到420,从AXP中减去0到633,等等

portfolio_df["Number_of_shares"] -= random(0, portfolio_df["Number_of_shares"])
屈服

TypeError: 'module' object is not callable

另外,Noob,我能理解的简单答案比我不能理解的优雅/复杂答案更受欢迎。感谢您的帮助。

基本上,您希望将列与0到1之间的随机数相乘。因此,您可以:

portfolio_df["Number_of_shares"] *= np.random.uniform(0,1, len(portfolio_df))

我的想法,没错!而且,
np.random.rand
是U(0,1),所以这相当于
np.random.rand(len(df))
Quang,这很有效!你能告诉我在哪里添加np.floor,这样我就得到了210、315和407,而不是210.873、315.9973和407.23844吗?@Mike do a
portfolio_df['Number…]=portfolio_df['Number…]=astype(int)
之后呢?@Mike不错,但我认为这是违反直觉的,所以有更好的。
portfolio_df["Number_of_shares"] *= np.random.uniform(0,1, len(portfolio_df))