首页 > 解决方案 > 根据先前的值在数据框中创建下一行

问题描述

我的 df 如下所示

   id    number 
   123      1   
   256      2  
   879      3   
   132      4  
   3215     5   
   216      6  

输出应该是这样的:

   id    number 
   123      1   
   256      2  
   879      3   
   132      4  
   3215     5   
   216      6  
   NaN      7
   NaN      8
   NaN      9
   NaN      10

所以基本上我需要将 1 添加到列号的前一行中,并且在列 id 中不应该有任何值。我需要 30 个新行。我试过这个:

n = 30  
for i in range(n):
       df = df.append(df.tail(1).add(1))

但结果不正确。你有什么想法?感谢帮助。问候托马斯

标签: pythonpandasdataframeappendadd

解决方案


您可以set_indexreindexreset_index

df.set_index('number').reindex(range(1, 11)).reset_index()

输出:

   number      id
0       1   123.0
1       2   256.0
2       3   879.0
3       4   132.0
4       5  3215.0
5       6   216.0
6       7     NaN
7       8     NaN
8       9     NaN
9      10     NaN

如果要保持列顺序:

cols = df.columns
df.set_index('number').reindex(range(1, 11)).reset_index()[cols]
       id  number
0   123.0       1
1   256.0       2
2   879.0       3
3   132.0       4
4  3215.0       5
5   216.0       6
6     NaN       7
7     NaN       8
8     NaN       9
9     NaN      10

推荐阅读