亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為數據框行分配 1 個隨機值 - 需要幫助

為數據框行分配 1 個隨機值 - 需要幫助

拉風的咖菲貓 2024-01-04 10:25:40
我想將 1 個值隨機分配給 IsShade 列(輸出),這樣值 1 只能分配 D 次(參見 Shading 列,例如 2 次、5 次或 3 次),并且必須迭代 E 次(Total 列)例如 6 次或 8 次或 15 次)有 100 萬行數據集,并附有示例輸入和圖像。因此,解釋一下我的輸入數據集:這是使用機器學習進行太陽能電池板預測的數據集。系列 X 并聯 X 遮陽意味著將有 3 個串聯的太陽能電池板,2 個并聯的太陽能電池板,并且 6 個(3 X 2)太陽能電池板中,其中 2 個被遮擋(意味著太陽能電池板被某種物質覆蓋)的陰影)因此,這里的“單元”列只是表示每個組有多少個太陽能電池板,例如 3 X 2,然后另一個也是 3 X 2,但它適用于不同的位置并具有不同的陰影值。因此,IsShade 列的輸出應在 1 到 (3 X 2) 的范圍內,即 6 行,任何隨機 X 行(著色列值)應標記為 1,并為每個組保留 0 值。對于另外 5-11 行,應該也會發生同樣的情況,但隨機位置行不同。我希望你能明白它的要點。抱歉沒有解釋清楚。輸入:在[1]中:Series Parallel  Shading Total  Cell 3         2        2      6     1         3         2        2      6     2        3         2        2      6     3        3         2        2      6     4        3         2        2      6     5        3         2        2      6     6        3         2        2      6     1        3         2        2      6     2        3         2        2      6     3        3         2        2      6     4        3         2        2      6     5        3         2        2      6     6            如果你能幫助我如何實現或Python代碼,那將會很有幫助。謝謝并感激。預期輸出示例:輸出[1]:Series Parallel  Shading Total  Cell  IsShade 3         2        2      6     1        0 3         2        2      6     2        03         2        2      6     3        13         2        2      6     4        03         2        2      6     5        03         2        2      6     6        13         2        2      6     1        0 3         2        2      6     2        03         2        2      6     3        03         2        2      6     4        13         2        2      6     5        13         2        2      6     6        0
查看完整描述

1 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

您可以在列中使用計數器,如果小于或等于列中的值,Cell則添加值,然后與列的連續值指定的每個組一起使用:1Shadingnumpy.whereSeries.sampleGroupBy.transformSeries


g = df['Cell'].eq(1).cumsum()


df['IsShade'] = np.where(df['Cell'].le(df['Shading']), 1, 0)

df['IsShade'] = df.groupby(g)['IsShade'].transform(lambda x: x.sample(frac=1))


print (df)

? ? Series? Parallel? Shading? Total? Cell? IsShade

0? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?1? ? ? ? 0

1? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?2? ? ? ? 1

2? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?3? ? ? ? 0

3? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?4? ? ? ? 1

4? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?5? ? ? ? 0

5? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?6? ? ? ? 0

6? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?1? ? ? ? 0

7? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?2? ? ? ? 0

8? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?3? ? ? ? 1

9? ? ? ? 3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?4? ? ? ? 0

10? ? ? ?3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?5? ? ? ? 0

11? ? ? ?3? ? ? ? ?2? ? ? ? 2? ? ? 6? ? ?6? ? ? ? 1

自定義函數的另一個想法:


def f(x):

? ? size = x.iat[0]

? ? total = len(x)?

? ? a = np.concatenate([np.ones(size, dtype=int), np.zeros(total - size, dtype=int)])

? ? np.random.shuffle(a)

? ? return a


g = df['Cell'].eq(1).cumsum()


df['IsShade'] = df.groupby(g)['Shading'].transform(f)


查看完整回答
反對 回復 2024-01-04
  • 1 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號