gpt4 book ai didi

python - 使用 pandas 进行数据增强

转载 作者:行者123 更新时间:2023-12-03 23:59:23 25 4
gpt4 key购买 nike

我正在对我的数据进行一些数据扩充。

基本上它们看起来像这样:

country.   size.   price.   product
CA. 1. 3.99. 12
US. 1. 2.99. 12
BR. 1. 10.99. 13

我想要做的是,因为尺寸固定为 1,所以我想为每个国家/地区、每个产品再添加 3 个尺寸并相应地提高价格。所以,如果尺寸是 2,那么价格就是 1 乘以 2 的价格,等等......

所以基本上,我正在寻找这个:

country.   size.   price.   product
CA. 1. 3.99. 12
CA. 2. 7.98. 12
CA. 3. 11.97. 12
CA. 4. 15.96. 12
US. 1. 2.99. 12
US. 2. 5.98. 12
US. 3. 8.97. 12
US. 4. 11.96. 12
BR. 1. 10.99. 13
BR. 2. 21.98. 13
BR. 3. 32.97. 13
BR. 4. 43.96. 13

用 pandas 做这件事的好方法是什么?我尝试使用 iterrows() 循环执行此操作,但这不是我的数据的快速解决方案。所以我错过了什么吗?

最佳答案

使用 Index.repeat添加新行,然后聚合 GroupBy.cumsum并通过 GroupBy.cumcount 添加计数器, 最后重置默认唯一索引的索引:

df = df.loc[df.index.repeat(4)]
df['size'] = df.groupby(level=0).cumcount().add(1)
df['price'] = df.groupby(level=0)['price'].cumsum()
df = df.reset_index(drop=True)
print (df)
country size price product
0 CA 1 3.99 12
1 CA 2 7.98 12
2 CA 3 11.97 12
3 CA 4 15.96 12
4 US 1 2.99 12
5 US 2 5.98 12
6 US 3 8.97 12
7 US 4 11.96 12
8 BR 1 10.99 13
9 BR 2 21.98 13
10 BR 3 32.97 13
11 BR 4 43.96 13

另一个没有cumcount的想法,但是有numpy.tile:

add = 3
df1 = df.loc[df.index.repeat(add + 1)]
df1['size'] = np.tile(range(1, add + 2), len(df))

df1['price'] = df1.groupby(level=0)['price'].cumsum()
df1 = df1.reset_index(drop=True)
print (df1)
country size price product
0 CA 1 3.99 12
1 CA 2 7.98 12
2 CA 3 11.97 12
3 CA 4 15.96 12
4 US 1 2.99 12
5 US 2 5.98 12
6 US 3 8.97 12
7 US 4 11.96 12
8 BR 1 10.99 13
9 BR 2 21.98 13
10 BR 3 32.97 13
11 BR 4 43.96 13

关于python - 使用 pandas 进行数据增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64042415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com