第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何根據(jù)某些條件迭代 Pandas DataFrame 以創(chuàng)建新的 DateFrame

如何根據(jù)某些條件迭代 Pandas DataFrame 以創(chuàng)建新的 DateFrame

慕田峪4524236 2023-05-16 14:22:48
我已將一個(gè) csv 文件導(dǎo)入到帶有銷售渠道數(shù)據(jù)的 Pandas DataFrame 中。每行代表一個(gè)機(jī)會(huì),包括潛在客戶名稱、產(chǎn)品信息、管道階段、概率、預(yù)期交易規(guī)模、預(yù)期結(jié)束日期、持續(xù)時(shí)間等?,F(xiàn)在我想將其轉(zhuǎn)換為銷售預(yù)測,我想通過將交易規(guī)模除以持續(xù)時(shí)間乘以概率來計(jì)算每個(gè)時(shí)期的平均收入。然后根據(jù)預(yù)期的截止日期和持續(xù)時(shí)間為所有可能的時(shí)間段創(chuàng)建一條線。我創(chuàng)建了一個(gè)簡化的示例來支持我的問題:import pandas as pdpipeline_data = [{'Client': 'A', 'Stage': 'suspect', 'Probability': '0.25', 'Dealsize': '1200', 'Duration': 6, 'Start_period': '2020-08'}, {'Client': 'B', 'Stage': 'prospect', 'Probability': '0.60', 'Dealsize': '1000', 'Duration': 4, 'Start_period': '2020-10'}]df = pd.DataFrame(pipeline_data)df輸出:    Client  Stage    Probability Dealsize   Duration    Start_period0   A       suspect  0.25        1200       6           2020-081   B       prospect 0.60        1000       4           2020-10因此,客戶每月的平均收入為 1200 / 6 * 0.25 = 50。收入將在 2020-08 至 2021-01 期間下降(即從 2020 年 8 月到 2021 年 1 月)。首選輸出將是:    Client  Stage    Probability Dealsize   Duration    Start_period Weighted_revenue Period0   A       suspect  0.25        1200       6           2020-08      50               2020-081   A       suspect  0.25        1200       6           2020-08      50               2020-092   A       suspect  0.25        1200       6           2020-08      50               2020-10 3   A       suspect  0.25        1200       6           2020-08      50               2020-114   A       suspect  0.25        1200       6           2020-08      50               2020-125   A       suspect  0.25        1200       6           2020-08      50               2021-016   B       prospect 0.60        1000       4           2020-10      150              2020-107   B       prospect 0.60        1000       4           2020-10      150              2020-118   B       prospect 0.60        1000       4           2020-10      150              2020-129   B       prospect 0.60        1000       4           2020-10      150              2021-01我已經(jīng)將 Start_period 轉(zhuǎn)換為 Period 類型,因此它可用于計(jì)算/迭代。我對(duì)編碼很陌生。我試圖在這個(gè)網(wǎng)站和其他網(wǎng)站上找到答案,但直到現(xiàn)在都沒有成功。我可以想象使用某種嵌套循環(huán)和追加函數(shù)來解決這個(gè)問題,但我不知道如何在 Pandas 中使用它......任何幫助將不勝感激!
查看完整描述

1 回答

?
慕尼黑5688855

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊

您可以嘗試使用列表理解,pd.date_range并且explode


df['Weighted_revenue']=(df['Dealsize'].astype(float)/df['Duration'].astype(float))*df['Probability'].astype(float)

df['Period']=[pd.date_range(x, periods=y, freq="M").strftime('%Y-%m') for x,y in zip(df["Start_period"], df["Duration"])]

df=df.explode('Period')

輸出:


df

  Client     Stage Probability Dealsize  Duration Start_period  Weighted_revenue   Period

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-08

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-09

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-10

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-11

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-12

0      A   suspect        0.25     1200         6      2020-08              50.0  2021-01

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-10

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-11

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-12

1      B  prospect        0.60     1000         4      2020-10             150.0  2021-01

細(xì)節(jié):


首先,我們'Weighted_revenue'使用您描述的公式創(chuàng)建列:


df['Weighted_revenue']=(df['Dealsize'].astype(float)/df['Duration'].astype(float))*df['Probability'].astype(float)

df


  Client     Stage Probability Dealsize  Duration Start_period  Weighted_revenue

0      A   suspect        0.25     1200         6      2020-08              50.0

1      B  prospect        0.60     1000         4      2020-10             150.0

然后,我們使用列表推導(dǎo) withzip來創(chuàng)建基于'Start_period'和'Duration'列的日期范圍


df['Period']=[pd.date_range(x, periods=y, freq="M").strftime('%Y-%m') for x,y in zip(df["Start_period"], df["Duration"])]

df


  Client     Stage Probability Dealsize  Duration Start_period  Weighted_revenue                                             Period

0      A   suspect        0.25     1200         6      2020-08              50.0  [2020-08, 2020-09, 2020-10, 2020-11, 2020-12, 2021-01]

1      B  prospect        0.60     1000         4      2020-10             150.0               [2020-10, 2020-11, 2020-12, 2021-01]

最后我們使用explode擴(kuò)展列表:


df=df.explode('Period')

df 


 Client     Stage Probability Dealsize  Duration Start_period  Weighted_revenue   Period

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-08

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-09

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-10

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-11

0      A   suspect        0.25     1200         6      2020-08              50.0  2020-12

0      A   suspect        0.25     1200         6      2020-08              50.0  2021-01

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-10

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-11

1      B  prospect        0.60     1000         4      2020-10             150.0  2020-12

1      B  prospect        0.60     1000         4      2020-10             150.0  2021-01



查看完整回答
反對(duì) 回復(fù) 2023-05-16
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)