向熊猫添加行以完成序列

时间:2018-07-20 01:37:42

标签: python pandas

像这样完成熊猫数据框的最佳方法是什么?

-ev

我想自动添加空行,以便订单列以0结尾(按组值划分)(不必按顺序排列,只需要存在这些行即可)

order |  group | value
 -3   |   a    |  0
 -2   |   a    |  3
 -4   |   b    |  2

2 个答案:

答案 0 :(得分:2)

先使用groupby然后使用reindex

df.groupby('group').\
   apply(lambda x : x.set_index('order').reindex(-np.arange(max(x['order'].abs()+1)))).\
      drop('group',1).reset_index()
Out[135]: 
  group  order  value
0     a      0    NaN
1     a     -1    NaN
2     a     -2    3.0
3     a     -3    0.0
4     b      0    NaN
5     b     -1    NaN
6     b     -2    NaN
7     b     -3    NaN
8     b     -4    2.0

答案 1 :(得分:1)

您可以使用list comprehensionreindex

dfs = [df[df['group'] == g] for g in df.group.unique()]
df_f = pd.concat([a.set_index('order').reindex(range(a.iloc[0].order, 1)) for a in dfs])
df_f['group'] = df_f.group.ffill()

        group   value
order       
-3      a       0.0
-2      a       3.0
-1      a       NaN
0       a       NaN
-4      b       2.0
-3      b       NaN
-2      b       NaN
-1      b       NaN
0       b       NaN