Python 根据条件值(n)插入n行

Python 根据条件值(n)插入n行,python,pandas,dataframe,Python,Pandas,Dataframe,我需要Python帮助解决这个问题 如果我有一些像这样的数据帧: ID Date Constant 0 1 some_date 1 1 1 some_date 1 2 2 some_date 4 3 2 some_date 4 4 2 some_date 4 5 3 some_date 2 6 3

我需要Python帮助解决这个问题

如果我有一些像这样的数据帧:

  ID           Date       Constant
0  1           some_date   1
1  1           some_date   1
2  2           some_date   4
3  2           some_date   4
4  2           some_date   4
5  3           some_date   2
6  3           some_date   2
我想根据条件“常量”为每个组插入行数。因此,对于组ID编号1,我希望有一个额外的行,对于编号2,我希望有4个新行,对于编号3,我希望有两个额外的行

有人能帮我吗


提前感谢您,您可以使用列表comp来计算数据帧+所需的重复次数

它不是很漂亮,但我不知道如何将其应用于数据帧中的多个组

df1 = pd.concat([
    pd.concat([data, 
               pd.concat([data.iloc[:1]] * data["Constant"].min())])
    for group, data in df.groupby(["ID", "Constant"])
])

 ID       Date  Constant
0   1  some_date         1
1   1  some_date         1
0   1  some_date         1 #repeat
2   2  some_date         4
3   2  some_date         4
4   2  some_date         4
2   2  some_date         4
2   2  some_date         4
2   2  some_date         4
2   2  some_date         4 # 4 repeated rows.
5   3  some_date         2
6   3  some_date         2
5   3  some_date         2
5   3  some_date         2 # 2 repeated rows.

IIUC,您可以使用列表comp来计算数据帧+所需的重复次数

它不是很漂亮,但我不知道如何将其应用于数据帧中的多个组

df1 = pd.concat([
    pd.concat([data, 
               pd.concat([data.iloc[:1]] * data["Constant"].min())])
    for group, data in df.groupby(["ID", "Constant"])
])

 ID       Date  Constant
0   1  some_date         1
1   1  some_date         1
0   1  some_date         1 #repeat
2   2  some_date         4
3   2  some_date         4
4   2  some_date         4
2   2  some_date         4
2   2  some_date         4
2   2  some_date         4
2   2  some_date         4 # 4 repeated rows.
5   3  some_date         2
6   3  some_date         2
5   3  some_date         2
5   3  some_date         2 # 2 repeated rows.

df.loc[df.index.repeat(df.Constant)]
。您能格式化数据帧吗?很难想象你在问什么。@QuangHoang我不认为这是对的,因为它在他想要行级附录的地方将数据框复制了*n。
df.loc[df.index.repeat(df.Constant)]
。你能格式化你的数据框吗?很难想象你在问什么。@QuangHoang我不认为这是对的,因为它将数据帧复制了*n,而他希望在其中添加行级附加。