Python 根据列为某些行指定权重

Python 根据列为某些行指定权重,python,pandas,select,dataframe,rows,Python,Pandas,Select,Dataframe,Rows,这是我的数据帧: 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

这是我的数据帧:

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     
有任何方法可以做到这一点

与重量一起使用。语法:

#vec = <vector of rows weights>
df.sample(weights = vec)
#vec=
df.样本(权重=向量)
与配重一起使用。语法:

#vec = <vector of rows weights>
df.sample(weights = vec)
#vec=
df.样本(权重=向量)

您可以使用
dict
进行重复次数和听写理解:

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)

另一种解决方案,如果需要,使用以下方法重复所有行5次:



您可以使用
dict
进行重复次数和听写理解:

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)

另一种解决方案,如果需要,使用以下方法重复所有行5次:



谢谢你,但是我想保留上面数据框的相同部分(关于这个问题)@jezreal你认为排序吗?我认为你需要添加
df=df.reset_index(drop=True)
df=df.reindex_axis(df.groupby(['id','Month']).cumcount.sort_values().index,axis=0.reset_index(drop=True)
如果需要与示例中相同的顺序。无排序,但复制所有数据框无逐行复制,则我不明白-您是否需要按列逐月复制所有行
?或者需要
pd.DataFrame({col:np.repeat(df[col],5)用于df.columns}中的col,columns=df.columns)
?如果要将所有行复制5次?谢谢,但我想保留上面数据框的相同部分(关于这个问题)@jezreal你认为排序吗?我认为你需要添加
df=df.reset\u index(drop=True)
df=df.reindex\u axis(df.groupby(['id','Month']).cumcount().sort\u values().index,axis=0)。reset\u index(drop=True)
如果需要与示例中相同的顺序。无排序,但复制所有数据框无逐行复制,则我不明白-您是否需要按列逐月复制所有行
?或者需要
pd.DataFrame({col:np.repeat(df[col],5)用于df.columns}中的col,columns=df.columns)
?是否将所有行复制5次?
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