选定的行插入到dataframe-pandas中

时间:2018-08-31 22:58:29

标签: python pandas dataframe

如何在熊猫数据框中插入行?我有一个大的数据框,我正在尝试确定特定的值以重复行并插入数据框。例如:

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)

3 个答案:

答案 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)

reindexrepeat一起使用

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