如何根据列值复制 pandas 数据框中的记录

问题描述 投票:0回答:1

我创建了一个 pandas 数据框,如下所示:

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

有人可以帮我用 pandas 做这个吗?

pandas dataframe duplicates probability record
1个回答
0
投票

一个可能的解决方案:

pd.concat([
    df, 
    pd.DataFrame(zip(df['col1'], 1-df['probability']), columns=df.columns)])
.sort_values('col1')

输出:

  col1  probability
0    A          0.3
0    A          0.7
1    B          0.6
1    B          0.4
© www.soinside.com 2019 - 2024. All rights reserved.