[英]Creating Pandas Dataframe row on the basis of other column value
我有一个包含三列的数据框:
order_no product quantity
0 5bf69f 3
0 5beaba 2
1 5bwq21 1
1 5bf69f 1
如果数量值大于1,我想创建行,如下所示:
order_no product quantity
0 5bf69f 1
0 5bf69f 1
0 5bf69f 1
0 5beaba 1
0 5beaba 1
1 5bwq21 1
1 5bf69f 1
首先是必要的唯一索引值,因此如有必要:
df = df.reset_index(drop=True)
然后使用Index.repeat
柱quantity
,并通过扩大排DataFrame.loc
,设置列1
由DataFrame.assign
和最后再由创建唯一索引DataFrame.reset_index
:
df = df.loc[df.index.repeat(df['quantity'])].assign(quantity=1).reset_index(drop=True)
print (df)
order_no product quantity
0 0 5bf69f 1
1 0 5bf69f 1
2 0 5bf69f 1
3 0 5beaba 1
4 0 5beaba 1
5 1 5bwq21 1
6 1 5bf69f 1
使用numpy.repeat
是可能的,但numpy numpy.repeat
所有数据转换为object,因为string
列:
print (pd.DataFrame(np.repeat(df.values,df.quantity,axis=0)).dtypes)
0 object
1 object
2 object
dtype: object
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.