【问题标题】:熊猫重复行并添加列
【发布时间】:2022-01-23 16:24:18
【问题描述】:

我有一个带有数百行的 pandas df,如下所示:

ID value
IDx12 6
IDx15 12

我想复制这些行 2 次,为每次复制增加 value 列,并为每个新创建的行添加一个名为 ratio 的列。 这是我想要创建的行的ratio 的值:

  • 原始行 = 0
  • 第一次复制 = 0.25
  • 第二次复制 = 0.5

所以输出应该是这样的:

ID value ratio
IDx12 6 0
IDx12 7 0.25
IDx12 8 0.5
IDx15 12 0
IDx15 13 0.25
IDx15 14 0.5

我发现了一种非常愚蠢的方法,方法是复制 df,手动递增 value,添加带有 ratio 的列,然后连接所有 dfs。 但它非常效率低下。你有一个聪明的方法吗? 感谢您的帮助。

【问题讨论】:

标签: python pandas


【解决方案1】:

以下是该问题的矢量化方法。

创建具有重复行的数据框

rdf = pd.DataFrame(np.repeat(df.values, 3, axis=0), columns=df.columns)

创建一个列来保存重复次数

rdf['repeat'] = 1
rdf['repeat'] = rdf.groupby('ID').repeat.cumsum() - 1

将重复添加到值

rdf['value'] += rdf['repeat']

创建比率列

rdf['ratio'] = rdf.repeat * 0.25

瞧!输出是

      ID value  repeat  ratio
0  IDx12     6       0   0.00
1  IDx12     7       1   0.25
2  IDx12     8       2   0.50
3  IDx15    12       0   0.00
4  IDx15    13       1   0.25
5  IDx15    14       2   0.50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-19
    • 2020-01-23
    • 2019-09-28
    • 2021-07-27
    • 2018-10-14
    • 2019-12-15
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多