假设您具有以下数据框:
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 举报,一经查实,本站将立刻删除。