我有一个看起来像这样的数据框:
I_Code Date_1 Date_2 s_count
FT-35447 01/09/2019 02/08/2019 6
FT-40664 01/09/2019 02/08/2019 6
FT-54185 01/09/2019 03/08/2019 3
FT-40664 01/09/2019 03/08/2019 3
FT-56984 02/09/2019 03/08/2019 3
FT-29238 02/09/2019 03/08/2019 3
FT-45919 02/09/2019 03/08/2019 3
FT-35447 01/09/2019 04/08/2019 2
FT-56984 02/09/2019 04/08/2019 2
FT-89801 02/09/2019 04/08/2019 2
FT-29238 02/09/2019 04/08/2019 2
FT-70293 03/09/2019 04/08/2019 2
我想创建一个新的数据框,该数据框将具有相同的以下字段以及一个具有 1 到 100 之间的随机数的新字段,但行数取决于 s_count。例如,第一个条目有 6 行,第二个条目有 6 行,第三个条目有 3 行,依此类推
df 中第 1 行的预期输出:
I_Code Date_1 Date_2 s_count num
FT-35447 01/09/2019 02/08/2019 6 10
FT-35447 01/09/2019 02/08/2019 6 13
FT-35447 01/09/2019 02/08/2019 6 56
FT-35447 01/09/2019 02/08/2019 6 45
FT-35447 01/09/2019 02/08/2019 6 34
FT-35447 01/09/2019 02/08/2019 6 90
有没有一种 Pandas 方法可以达到同样的目的。
谢谢
最佳答案
使用Index.repeat
与 DataFrame.loc
查找重复的行,然后通过 numpy.random.randint
设置新的列值:
df = df.loc[df.index.repeat(df['s_count'])].reset_index(drop=True)
df['num'] = np.random.randint(1, 100, size=len(df))
print (df.head(20))
I_Code Date_1 Date_2 s_count num
0 FT-35447 01/09/2019 02/08/2019 6 83
1 FT-35447 01/09/2019 02/08/2019 6 84
2 FT-35447 01/09/2019 02/08/2019 6 11
3 FT-35447 01/09/2019 02/08/2019 6 83
4 FT-35447 01/09/2019 02/08/2019 6 90
5 FT-35447 01/09/2019 02/08/2019 6 12
6 FT-40664 01/09/2019 02/08/2019 6 33
7 FT-40664 01/09/2019 02/08/2019 6 69
8 FT-40664 01/09/2019 02/08/2019 6 11
9 FT-40664 01/09/2019 02/08/2019 6 29
10 FT-40664 01/09/2019 02/08/2019 6 46
11 FT-40664 01/09/2019 02/08/2019 6 44
12 FT-54185 01/09/2019 03/08/2019 3 92
13 FT-54185 01/09/2019 03/08/2019 3 46
14 FT-54185 01/09/2019 03/08/2019 3 45
15 FT-40664 01/09/2019 03/08/2019 3 87
16 FT-40664 01/09/2019 03/08/2019 3 88
17 FT-40664 01/09/2019 03/08/2019 3 78
18 FT-56984 02/09/2019 03/08/2019 3 89
19 FT-56984 02/09/2019 03/08/2019 3 18
关于python - 根据列数据用python生成数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58581501/