如何基于booklines的列值程序化复制pandas中matches_df的行?
实现方法
当然可以,直接从booklines中提取Nums列的数值来动态控制复制次数即可,以下是几种简洁的实现方式:
方法一:使用pd.concat动态拼接
import pandas as pd data = [10] booklines = pd.DataFrame(data,columns=['Nums']) matches = {'Fullname':['Sasel - Dassendorf'],'HomeTeam':['Sasel'],'AwayTeam':['Dassendorf']} matches_df = pd.DataFrame(matches) # 从booklines中提取复制次数 repeat_count = booklines['Nums'].iloc[0] # 动态复制并合并,重置索引避免重复 result_df = pd.concat([matches_df]*repeat_count, ignore_index=True)
方法二:通过索引重复生成新表
# 提取复制次数 repeat_count = booklines['Nums'].iloc[0] # 重复原表索引后重构DataFrame,最后重置索引 result_df = matches_df.loc[matches_df.index.repeat(repeat_count)].reset_index(drop=True)
方法三:用numpy.tile批量重复(适合大数量场景)
import numpy as np repeat_count = booklines['Nums'].iloc[0] # 重复原表的数值数组,再重构为DataFrame result_df = pd.DataFrame(np.tile(matches_df.values, (repeat_count, 1)), columns=matches_df.columns)
以上方法都无需手动指定数值10,完全依赖booklines中的Nums值动态控制复制次数,最终生成的result_df会包含10行与原matches_df完全一致的数据。
内容的提问来源于stack exchange,提问作者Paul Corcoran
相关产品推荐
相关产品推荐

