像这样完成熊猫数据框的最佳方法是什么?
-ev
我想自动添加空行,以便订单列以0结尾(按组值划分)(不必按顺序排列,只需要存在这些行即可)
order | group | value
-3 | a | 0
-2 | a | 3
-4 | b | 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 comprehension
和reindex
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