根据条件值重复行

时间:2020-05-16 08:21:35

标签: python pandas dataframe duplicates

我需要像这样在熊猫数据框中复制一些行

name  times
   A      2
   B      1
   C      3
   D     20
...

我需要的是在col2值小于20时复制行

我现在正在做的是:

for t in df["times"]:
       if t < 20:
           df = df.loc[df.index.repeat(t)]

但是脚本一直在运行,我必须停止运行(我已经等了很久了...)。

有什么方法可以改善这一点或以其他方式做到吗?

1 个答案:

答案 0 :(得分:1)

使用:

#condition lt for <
mask = df['times'].lt(20)
#filter by boolean indexing
df1 = df[mask].copy()
#repeat rows
df1 = df1.loc[df1.index.repeat(df1['times'])]

#add rows higher like 20, sorting and create default index
df = pd.concat([df1, df[~mask]]).sort_index().reset_index(drop=True)
print (df)
  name  times
0    A      2
1    A      2
2    B      1
3    C      3
4    C      3
5    C      3
6    D     20
相关问题