我创建了一个熊猫数据框,如下所示:
ds = {'col1' : ["A","B"], 'probability' : [0.3, 0.6]}
df = pd.DataFrame(data=ds)
数据框如下所示:
print(df)
col1 probability
0 A 0.3
1 B 0.6
我需要创建一个新的数据框,复制每一行,并为重复的记录分配一个总和为 1 的概率。
从上面的例子来看:
- 我需要复制记录 0,使得 A 获得 0.3 的概率(因此它保留已经存在的内容),并且重复的记录获得 0.7 的概率(0.3 + 0.7 = 1)
- 我需要复制记录 1,使得 B 获得 0.6 的概率(因此它保留已经存在的内容),并且重复的记录获得 0.4 的概率(0.6 + 0.4 = 1)
生成的数据框如下所示:
col1 probability
0 A 0.3
1 A 0.7
2 B 0.6
3 B 0.4
有人能帮我在熊猫上做这个吗?
一种可能的解决方案是,首先使用
col1
和创建第二个数据框1-probability
。然后,它将第二个数据框垂直连接到原始数据框,并按 排序col1
:或者(这可能是首选),正如@mozway 在下面的评论中所建议的那样:
另一种方法是使用
list comprehension
和numpy
:输出:
你可以使用这个: