gpt4 book ai didi

python - 根据列对某些行赋予权重

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:53 25 4
gpt4 key购买 nike

这是我的数据框:

id   Year   Month   Day     Instant     Temperature     DayType     DayValidity     LoadNette   
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260
195 2008 4 5 3 8.07 6 1 51907.94746
196 2008 5 5 4 8.03 6 1 50848.16566

我想将我的数据框复制 5 次,但是通过像这样基于月份为某些行提供 wieghts,例如月份为 4 的行,它将仅复制 3 次,而月份 4 仅复制 2 次,就像这样使用 python:

id   Year   Month   Day     Instant     Temperature     DayType     DayValidity     LoadNette   
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260
195 2008 4 5 3 8.07 6 1 51907.94746
196 2008 5 5 4 8.03 6 1 50848.16566
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260
195 2008 4 5 3 8.07 6 1 51907.94746
196 2008 5 5 4 8.03 6 1 50848.16566
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260
195 2008 4 5 3 8.07 6 1 51907.94746
196 2008 5 5 4 8.03 6 1 50848.16566
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260
195 2008 4 5 3 8.07 6 1 51907.94746
192 2008 1 5 0 8.03 6 1 53039.77133
193 2008 2 5 1 8.07 6 1 52200.71569
194 2008 3 5 2 8.10 6 1 51681.17260

有什么办法可以做到这一点

最佳答案

您可以使用 dict 来获取 numpy.repeat 的重复次数和听写理解:

d = {1:5, 2:2, 3:1, 4:3, 5:3}
l = df['Month'].map(d)
df = pd.DataFrame({col: np.repeat(df[col], l) for col in df.columns}, columns=df.columns)

print (df)
id Year Month Day Instant Temperature DayType DayValidity \
0 192 2008 1 5 0 8.03 6 1
0 192 2008 1 5 0 8.03 6 1
0 192 2008 1 5 0 8.03 6 1
0 192 2008 1 5 0 8.03 6 1
0 192 2008 1 5 0 8.03 6 1
1 193 2008 2 5 1 8.07 6 1
1 193 2008 2 5 1 8.07 6 1
2 194 2008 3 5 2 8.10 6 1
3 195 2008 4 5 3 8.07 6 1
3 195 2008 4 5 3 8.07 6 1
3 195 2008 4 5 3 8.07 6 1
4 196 2008 5 5 4 8.03 6 1
4 196 2008 5 5 4 8.03 6 1
4 196 2008 5 5 4 8.03 6 1

LoadNette
0 53039.77133
0 53039.77133
0 53039.77133
0 53039.77133
0 53039.77133
1 52200.71569
1 52200.71569
2 51681.17260
3 51907.94746
3 51907.94746
3 51907.94746
4 50848.16566
4 50848.16566
4 50848.16566

另一种解决方案,如果需要使用 concat 将所有行重复 5 次 | :

df = pd.concat([df] * 5, ignore_index=True)

print (df)
id Year Month Day Instant Temperature DayType DayValidity \
0 192 2008 1 5 0 8.03 6 1
1 193 2008 2 5 1 8.07 6 1
2 194 2008 3 5 2 8.10 6 1
3 195 2008 4 5 3 8.07 6 1
4 196 2008 5 5 4 8.03 6 1
5 192 2008 1 5 0 8.03 6 1
6 193 2008 2 5 1 8.07 6 1
7 194 2008 3 5 2 8.10 6 1
8 195 2008 4 5 3 8.07 6 1
9 196 2008 5 5 4 8.03 6 1
10 192 2008 1 5 0 8.03 6 1
11 193 2008 2 5 1 8.07 6 1
12 194 2008 3 5 2 8.10 6 1
13 195 2008 4 5 3 8.07 6 1
14 196 2008 5 5 4 8.03 6 1
15 192 2008 1 5 0 8.03 6 1
16 193 2008 2 5 1 8.07 6 1
17 194 2008 3 5 2 8.10 6 1
18 195 2008 4 5 3 8.07 6 1
19 196 2008 5 5 4 8.03 6 1
20 192 2008 1 5 0 8.03 6 1
21 193 2008 2 5 1 8.07 6 1
22 194 2008 3 5 2 8.10 6 1
23 195 2008 4 5 3 8.07 6 1
24 196 2008 5 5 4 8.03 6 1

LoadNette
0 53039.77133
1 52200.71569
2 51681.17260
3 51907.94746
4 50848.16566
5 53039.77133
6 52200.71569
7 51681.17260
8 51907.94746
9 50848.16566
10 53039.77133
11 52200.71569
12 51681.17260
13 51907.94746
14 50848.16566
15 53039.77133
16 52200.71569
17 51681.17260
18 51907.94746
19 50848.16566
20 53039.77133
21 52200.71569
22 51681.17260
23 51907.94746
24 50848.16566

关于python - 根据列对某些行赋予权重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44670180/

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