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)

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...