【问题标题】:How to replicate/ copy pandas dataframe rows如何复制/复制熊猫数据框行
【发布时间】:2021-09-06 17:32:25
【问题描述】:

我需要将相同的行块复制到该块下方 3 次。如下例所示。

数据帧(df1):-

S.No    Cal        Date              DFM

  1            8       01-03-2013   100.00%
  1            7       01-06-2013   100.00%
  1            6       01-09-2013   100.00%
  1            5       01-12-2013   99.99%
  1            4       01-03-2014   99.97%
  1            3       01-06-2014   99.95%
  1            2       01-09-2014   98.89%
  1            1      01-12-2014   39.36%
  1            0      01-03-2015   0.00%
  1            0      01-06-2015   0.00%
  1            0      01-09-2015   0.00%
  1            0      01-12-2015   0.00%
  2            8      01-03-2013   100.00%
  2            7      01-06-2013   100.00%
  2            6      01-09-2013   100.00%
  2            5      01-12-2013   99.99%
  2            4      01-03-2014   99.97%
  2            3      01-06-2014   97.95%
  2            2      01-09-2014   94.42%
  2            1      01-12-2014   43.13%
  2            0      01-03-2015   0.00%
  2            0      01-06-2015   0.00%
  2            0      01-09-2015   0.00%
  2            0      01-12-2015   0.00%
  3            8      01-03-2013   100.00%
  3            7      01-06-2013   100.00%
  3            6      01-09-2013   100.00%
  3            5      01-12-2013   99.99%
  3            4      01-03-2014   99.96%
  3            3      01-06-2014   99.94%
  3            2      01-09-2014   98.85%
  3            1      01-12-2014   54.77%
  3            0      01-03-2015   0.00%
  3            0      01-06-2015   0.00%
  3            0      01-09-2015   0.00%
  3            0      01-12-2015   0.00%

结果:-

第一个数据帧:-

S.No     Cal     Date              DFM

  1            8       01-03-2013   100.00%
  1            7       01-06-2013   100.00%
  1            6       01-09-2013   100.00%
  1            5       01-12-2013   99.99%
  1            4       01-03-2014   99.97%
  1            3       01-06-2014   99.95%
  1            2       01-09-2014   98.89%
  1            1      01-12-2014   39.36%
  1            0      01-03-2015   0.00%
  1            0      01-06-2015   0.00%
  1            0      01-09-2015   0.00%
  1            0      01-12-2015   0.00%
  1            8      01-03-2013   100.00%
  1            7      01-06-2013   100.00%
  1            6      01-09-2013   100.00%
  1            5      01-12-2013   99.99%
  1            4      01-03-2014   99.97%
  1            3      01-06-2014   99.95%
  1            2      01-09-2014   98.89%
  1            1      01-12-2014   39.36%
  1            0      01-03-2015   0.00%
  1            0      01-06-2015   0.00%
  1            0      01-09-2015   0.00%
  1            0      01-12-2015   0.00%
  1            8      01-03-2013   100.00%
  1            7      01-06-2013   100.00%
  1            6      01-09-2013   100.00%
  1            5      01-12-2013   99.99%
  1            4      01-03-2014   99.97%
  1            3      01-06-2014   99.95%
  1            2      01-09-2014   98.89%
  1            1      01-12-2014   39.36%
  1            0      01-03-2015   0.00%
  1            0      01-06-2015   0.00%
  1            0      01-09-2015   0.00%
  1            0      01-12-2015   0.00%
  2            8      01-03-2013   100.00%
  2            7      01-06-2013   100.00%
  2            6      01-09-2013   100.00%
  2            5      01-12-2013   99.99%
  2            4      01-03-2014   99.97%
  2            3      01-06-2014   97.95%
  2            2      01-09-2014   94.42%
  2            1      01-12-2014   43.13%
  2            0      01-03-2015   0.00%
  2            0      01-06-2015   0.00%
  2            0      01-09-2015   0.00%
  2            0      01-12-2015   0.00%
  2            8      01-03-2013   100.00%
  2            7      01-06-2013   100.00%
  2            6      01-09-2013   100.00%
  2            5      01-12-2013   99.99%
  2            4      01-03-2014   99.97%
  2            3      01-06-2014   97.95%
  2            2      01-09-2014   94.42%
  2            1      01-12-2014   43.13%
  2            0      01-03-2015   0.00%
  2            0      01-06-2015   0.00%
  2            0      01-09-2015   0.00%
  2            0      01-12-2015   0.00%
  2            8      01-03-2013   100.00%
  2            7      01-06-2013   100.00%
  2            6      01-09-2013   100.00%
  2            5      01-12-2013   99.99%
  2            4      01-03-2014   99.97%
  2            3      01-06-2014   97.95%
  2            2      01-09-2014   94.42%
  2            1      01-12-2014   43.13%
  2            0      01-03-2015   0.00%
  2            0      01-06-2015   0.00%
  2            0      01-09-2015   0.00%
  2            0      01-12-2015   0.00%
  3            8      01-03-2013   100.00%
  3            7      01-06-2013   100.00%
  3            6      01-09-2013   100.00%
  3            5      01-12-2013   99.99%
  3            4      01-03-2014   99.96%
  3            3      01-06-2014   99.94%
  3            2      01-09-2014   98.85%
  3            1      01-12-2014   54.77%
  3            0      01-03-2015   0.00%
  3            0      01-06-2015   0.00%
  3            0      01-09-2015   0.00%
  3            0      01-12-2015   0.00%
  3            8      01-03-2013   100.00%
  3            7      01-06-2013   100.00%
  3            6      01-09-2013   100.00%
  3            5      01-12-2013   99.99%
  3            4      01-03-2014   99.96%
  3            3      01-06-2014   99.94%
  3            2      01-09-2014   98.85%
  3            1      01-12-2014   54.77%
  3            0      01-03-2015   0.00%
  3            0      01-06-2015   0.00%
  3            0      01-09-2015   0.00%
  3            0      01-12-2015   0.00%
  3            8      01-03-2013   100.00%
  3            7      01-06-2013   100.00%
  3            6      01-09-2013   100.00%
  3            5      01-12-2013   99.99%
  3            4      01-03-2014   99.96%
  3            3      01-06-2014   99.94%
  3            2      01-09-2014   98.85%
  3            1      01-12-2014   54.77%
  3            0      01-03-2015   0.00%
  3            0      01-06-2015   0.00%
  3            0      01-09-2015   0.00%
  3            0      01-12-2015   0.00%

    

【问题讨论】:

    标签: python pandas copy replicate


    【解决方案1】:

    一种方法是按"S.No" 分组,然后返回一个连接的帧并在最后重置索引:

    new_df = df.groupby("S.No").apply(lambda d: pd.concat([d]*3)).reset_index(drop=True)
    

    得到

    >>> new_df
    
         S.No  Cal        Date      DFM
    0       1    8  01-03-2013  100.00%
    1       1    7  01-06-2013  100.00%
    2       1    6  01-09-2013  100.00%
    3       1    5  01-12-2013   99.99%
    4       1    4  01-03-2014   99.97%
    ..    ...  ...         ...      ...
    103     3    1  01-12-2014   54.77%
    104     3    0  01-03-2015    0.00%
    105     3    0  01-06-2015    0.00%
    106     3    0  01-09-2015    0.00%
    107     3    0  01-12-2015    0.00%
    
    [108 rows x 4 columns]
    

    【讨论】:

    猜你喜欢
    • 2013-02-07
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    相关资源
    最近更新 更多