我的dataframe看起来像这样:
| 城市|平均值|SD|
| - -----|- -----|- -----|
| 纽卡斯尔|六十|0.81|
| 利物浦|六十二|零点九一|
| 卡迪夫|六十五|0.87|
| 格拉斯哥|五十九|0.86|
我想添加列'n',其中包含使用Mean和SD列值的新随机值。我在使用之前做过这个:df['n'] = np.random.normal(df['Mean'], df['SD'])
然后我想添加第二列,它根据'n'中的值生成五分位数排名。我使用以下命令完成了此操作:df['q'] = pd.qcut(df['n'], 5, labels = False)
| 城市|平均值|SD| n| q| n+1| q+1|
| - -----|- -----|- -----|- -----|- -----|- -----|- -----|
| 纽卡斯尔|六十|0.81|五十七|5个|五十五|5个|
| 利物浦|六十二|零点九一|六十一|1|五十七|4|
| 卡迪夫|六十五|0.87|六十|1|六十一|1|
| 格拉斯哥|五十九|0.86|五十五|3|五十八|3|
我想循环这两个步骤来添加2000列,1000 'n'列(名为'n+1')和1000 'q'列(名为'q+1')。
2条答案
按热度按时间x7yiwoj41#
使用以下方法解决了该问题:
ccgok5k52#
你可以使用numpy在一次调用中创建所有的随机数。一旦将这些列添加到DataFrame中,就可以在每个新列上使用
qcut
并添加这些列。这不需要任何(显式)for
循环。