繁体   English   中英

根据其他列值创建Pandas Dataframe行

[英]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.repeatquantity ,并通过扩大排DataFrame.loc ,设置列1DataFrame.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM