为了账号安全,请及时绑定邮箱和手机立即绑定

反向分组.

反向分组.

函数式编程 2023-09-12 20:00:27
我有一个 pandas 数据框,其中包含变量名称、每个变量的值以及count(显示该行的频率):df = pd.DataFrame({'var':['A', 'B', 'C'], 'value':[10, 20, 30], 'count':[1,2,3]})var  value  countA    10     1B    20     2C    30     3我想用来count获得这样的输出:var  valueA    10B    20B    20C    30C    30C    30最好的方法是什么?
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

您可以使用index.repeat:


i = df.index.repeat(df['count'])

d = df.loc[i, :'value'].reset_index(drop=True)

   var  value

0   A     10

1   B     20

2   B     20

3   C     30

4   C     30

5   C     30


查看完整回答
反对 回复 2023-09-12
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

使用repeatwithreindex来表达这一短句:


df.reindex(df.index.repeat(df['count']))

输出:


  var  value  count

0   A     10      1

1   B     20      2

1   B     20      2

2   C     30      3

2   C     30      3

2   C     30      3

或者消除“计数”列:


df[['var','value']].reindex(df.index.repeat(df['count']))

或者


df.reindex(df.index.repeat(df['count'])).drop('count', axis=1)

输出:


  var  value

0   A     10

1   B     20

1   B     20

2   C     30

2   C     30

2   C     30


查看完整回答
反对 回复 2023-09-12
  • 2 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信