我试图在 Dataframe 的每个年份组中生成一个不同的随机日。所以我需要replacement = False
,否则会失败。
你不能只添加一列随机数,因为我的年份列表中会有超过365年的年份一旦你达到365年,它就不能再创建任何随机样本,除非替换。
我已经探索了聚集、聚合、应用和转换。我得到的最接近的是这样的:
years = pd.DataFrame({"year": [1,1,2,2,2,3,3,4,4,4,4]})
years["day"] = 0
grouped = years.groupby("year")["day"]
grouped.transform(lambda x: np.random.choice(366, replace=False))
它给出了:
0 8
1 8
2 319
3 319
4 319
5 149
6 149
7 130
8 130
9 130
10 130
Name: day, dtype: int64
但我想要这个:
0 8
1 16
2 119
3 321
4 333
5 4
6 99
7 30
8 129
9 224
10 355
Name: day, dtype: int64
2条答案
按热度按时间zphenhs41#
你可以使用你的代码做一些小的修改。你必须指定样本的数量。
输出:
t0ybt7op2#
对于numpybroadcasting:
输出: