Python 熊猫按多列分组,并通过迭代复制行

Python 熊猫按多列分组,并通过迭代复制行,python,pandas,duplicates,conditional,rows,Python,Pandas,Duplicates,Conditional,Rows,我有一个熊猫阵列,看起来像下图。我想做以下几点: # Create four copies of the dataframe Yr2_df = df1 Yr3_df = df1 Yr4_df = df1 Yr5_df = df1 # Merge the 5 dataframe into one combined dataframe df = pd.concat([df1, Yr2_df, Yr3_df, Yr4_df, Yr5_df],axis=0).sort_index().reset_in

我有一个熊猫阵列,看起来像下图。我想做以下几点:

# Create four copies of the dataframe
Yr2_df = df1
Yr3_df = df1
Yr4_df = df1
Yr5_df = df1

# Merge the 5 dataframe into one combined dataframe
df = pd.concat([df1, Yr2_df, Yr3_df, Yr4_df, Yr5_df],axis=0).sort_index().reset_index(drop=True)
  • 按Exchange和Ticker对行进行分组(以确保它们是唯一的)
  • 创建每行的4个副本
  • 对于每一行,将年份设置为不同的值(来自变量)、2017年、2016年等
  • 目标是为每个股票代码显示5年的历史,目前我的表格只有一年的空间。我在这里研究过这个,但是我找不到这个组合。提前谢谢

    我已经用以下方法部分解决了这个问题:

    # Create four copies of the dataframe
    Yr2_df = df1
    Yr3_df = df1
    Yr4_df = df1
    Yr5_df = df1
    
    # Merge the 5 dataframe into one combined dataframe
    df = pd.concat([df1, Yr2_df, Yr3_df, Yr4_df, Yr5_df],axis=0).sort_index().reset_index(drop=True)
    
    但是,这并未提供日期范围(每行应具有不同的年份:2017年、2016年等)。有什么建议吗


    我就是这样添加日期范围的。挑战是在年份列表中循环,因为这比行列表要短

    # Define list of years
    years = [Year_Minus_1, Year_Minus_2, Year_Minus_3, Year_Minus_4, Year_Minus_5]
    
    # Define index for iteration
    index = df.index
    
    # Import library for advanced iteration
    import itertools
    
    # Iterate over index and list of years so that we have one row per year for each ticker
    for i, y in zip(index, itertools.cycle(years)):
         df.iloc[i, df.columns.get_loc('Year')] = y