微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-根据值重复熊猫数据框,然后将计数器添加回数据框

假设您具有以下数据框:

item_a item_b
1       123
7       32   
4       18

然后您有一个常数’PERIODS = 3′,我如何将上述数据帧重复3次,同时将每次重复添加为计数器.

理想的结果是:

counter item_a item_b
1       1       123
1       7       32   
1       4       18
2       1       123
2       7       32   
2       4       18
3       1       123
3       7       32   
3       4       18

解决方法:

这是另一种方式,它只是简单地将df串联起来,而不需要多次,将索引设置为每次串联时逐渐增加的常数:

import numpy as np

period=3

new_df = pd.concat([df.set_index(np.repeat(i, len(df))) for i in range(1,period+1)])

>>> new_df
   item_a  item_b
1       1     123
1       7      32
1       4      18
2       1     123
2       7      32
2       4      18
3       1     123
3       7      32
3       4      18

# Or, to have counter as a separate column rather than the index:
new_df = pd.concat([df.assign(counter=np.repeat(i, len(df))) 
                    for i in range(1,period+1)]).reset_index(drop=True) 

解决方案2

从您的评论来看,您正在寻找快速执行代码方法,该方法更快:

new_df = pd.DataFrame(np.repeat([df.values],period, axis=0).reshape(-1,df.shape[1]), 
             index=np.repeat(range(1,period+1), len(df)), columns=df.columns)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐