python - 根据列数据用python生成数据

标签 python pandas numpy

我有一个看起来像这样的数据框:

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.repeatDataFrame.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/

相关文章:

python - 如何在 Python 中聚合某些列,同时保留其他列

python - 使用数据透视 reshape pandas 数据框并提供多列作为索引

python - 将自定义 XML 解析为 JSON 或 Pandas DataFrame。 (Python)

python - 根据条件计算 Dataframe 中的正负连续元素

Python 包导入未纳入函数中

python - 如何根据相似值将一列拆分为多列

Python:为什么 MRO 中的最后一个类在其 super 的 __init__ 调用中应该有零参数,否则会出现运行时异常

python - 检查数据框列中的每个值是否包含来自另一个数据框列的单词

python - 在numpy中乘以对数概率矩阵的数值稳定方法

python - 使用 rPython 包将 numpy 数组导入到 R 中