0

给定一个pd.DataFrame例如:

print(pd.DataFrame([['a', 0, 'b'], ['c', 1, 'd'], ['f', 4, 'e']]))
   0  1  2
0  a  0  b
1  c  1  d
2  f  4  e

我想通过在整数列上递增来“填充”行。也就是说,我想获得:

     0  1    2
0    a  0    b
1    c  1    d
2  NaN  2  NaN
3  NaN  3  NaN
4    f  4    e

因为我将groupby在大型数据集中的操作中使用它,所以我正在寻找最有效的代码来执行此操作。

4

1 回答 1

2

您可以将 1 列转换为索引并使用它重新索引:

In [33]: df.set_index(1).reindex(range(df[1].iloc[0], df[1].iloc[-1]+1)).reset_index()
Out[33]: 
   1    0    2
0  0    a    b
1  1    c    d
2  2  NaN  NaN
3  3  NaN  NaN
4  4    f    e

然后,如果您愿意,可以对列重新排序。

不知道性能,但坦率地说,自定义 groupby 操作开始时非常慢。如果速度真的很关键,最好的办法是把这个递增操作完全移出 groupby,如果你能做到的话。

于 2017-11-14T00:20:58.183 回答