如何在熊猫数据框中插入行?我有一个大的数据框,我正在尝试确定特定的值以重复行并插入数据框。例如:
df1 = pd.DataFrame([[1, 2], [3, 4],[1, 6],[2,3],[1,5]], columns=["a", "b"])
a b
0 1 2
1 3 4
2 1 6
3 2 3
4 1 5
列“ a”代表要在数据帧中插入的行重复次数,因此我想获得以下信息
a b
0 1 2
1 1 4
2 1 4
3 1 4
4 1 6
5 1 3
6 1 3
7 1 5
我尝试使用append,但是结果不是我期望的。这是我到目前为止所拥有的。我将不胜感激。
df2 = df1[df1.a > 1] # To select rows with values more than 1
repeats = (df2.iloc[0]["a"] - 1) # number of repetitions -1
r2 = pd.concat([df2]*repeats, ignore_index=True)
df_modified = df1.append(r2, ignore_index=True)
答案 0 :(得分:1)
您可以使用嵌套列表理解:
Select
u.firstname
,u.lastname
,(Select Max(c.course_date)
from Attendance a
join Course c on
c.course_id = a.course_id
where
a.username = u.username
and c.course_name = <course>
) latest_date
from user u
where u.username in (<user list>);
答案 1 :(得分:1)
您可以使用numpy.repeat
:
import numpy as np
res = pd.DataFrame({'a': 1, 'b': np.repeat(df1['b'].values, df1['a'].values)})
print(res)
a b
0 1 2
1 1 4
2 1 4
3 1 4
4 1 6
5 1 3
6 1 3
7 1 5
答案 2 :(得分:1)
将reindex
与repeat
一起使用
df1.reindex(df1.index.repeat(df1.a)).assign(a=1).reset_index(drop=True)
Out[1266]:
a b
0 1 2
1 1 4
2 1 4
3 1 4
4 1 6
5 1 3
6 1 3
7 1 5