Python Pandas-给定此列的阈值,根据列值创建重复行

Python Pandas-给定此列的阈值,根据列值创建重复行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框: A B C 20 6 7 5 3.8 9 34 4 1 如果A中的值大于10,我想创建重复的行。 因此,数据帧最终应如下所示: A B C 10 6 7 10 6 7 5 3.8 9 10 4 1 10 4 1 10 4 1 4 4 1 熊猫有没有办法优雅地做到这一点?或者我必须在行上循环并手动执行。。? 我已经浏览了Stack

我有一个数据框:

A    B     C
20   6     7 
5    3.8   9
34   4     1
如果A中的值大于10,我想创建重复的行。 因此,数据帧最终应如下所示:

A    B     C
10   6     7
10   6     7
5    3.8   9
10   4     1
10   4     1
10   4     1
4    4     1
熊猫有没有办法优雅地做到这一点?或者我必须在行上循环并手动执行。。? 我已经浏览了StackOverflow上的类似查询,但没有一个查询完全符合我的要求。

使用:

#create default index
df = df.reset_index(drop=True)

#get floor and modulo divisions
a = df['A'] // 10 
b = (df['A'] % 10)

#repeat once if not 0
df2 = df.loc[df.index.repeat(b.ne(0).astype(int))]
#repplace values of A with map by index 
df2['A'] = df2.index.map(b.get)

#repeat with assign scalar 10
df1 = df.loc[df.index.repeat(a)].assign(A=10)

#join together, sort index and create default RangeIndex
df = df1.append(df2).sort_index().reset_index(drop=True)
print (df)
    A    B  C
0  10  6.0  7
1  10  6.0  7
2   5  3.8  9
3  10  4.0  1
4  10  4.0  1
5  10  4.0  1
6   4  4.0  1

我的python在到达df2=df.loc[df.index.repeat(b.ne(0.astype(int))]行时挂断了,知道为什么吗?第一个解决方案如何工作
df2=df.loc[df.index.repeat(b.clip_upper(1))]
?@Ravikumar-好,如果使用
df=df.reset_index(drop=True)
作为第一步,它是如何工作的?什么是
打印(df.head().to_dict())
?数据是机密的吗?事实上,我犯了一个愚蠢的错误,a中的值大约为10^5,所以很明显这需要时间,因为我没有更改阈值。