簡體   English   中英

使用條件 rolling().mean() 在 DataFrame 中創建新列

[英]Creating new column in DataFrame with conditional rolling().mean()

我正在處理相當大的 DataFrame 並想加快速度。 我的數據采用以下格式:

姓名 數字
條件一 1個
條件一 2個
條件一 2.2
條件一 2個
條件二 1個
條件二 1.1
條件二 1.2
條件二 1.3

現在我想對數字應用滾動平均值,但不混合不同的條件。 我的預期結果是:

姓名 數字 意思
條件一 1個
條件一 2個 1.5
條件一 2.2 2.1
條件一 2個 2.1
條件二 1個
條件二 1.1 1.05
條件二 1.2 1.15
條件二 1.3 1.25

我現在正在做的是迭代所有條件並將計算出的平均值保存在不同的 Dataframe 中,例如:

mean = {}
for con in data["Name"].drop_duplicates():
   mean[con] = data[data["Name" == con]].rolling(window=2).mean()

但這總是需要幾分鍾,這就是為什么我正在尋找直接創建列的替代方法。 我用 .apply 試過了,但那不起作用。 至少我到目前為止沒有嘗試過。

非常感謝你!

名稱分組,然后使用滾動平均值轉換數字

df['Mean'] = df.groupby('Name')['Number'].transform(lambda x: x.rolling(window=2).mean())
print(df)

Output

          Name  Number  Mean
0  Condition 1     1.0   NaN
1  Condition 1     2.0  1.50
2  Condition 1     2.2  2.10
3  Condition 1     2.0  2.10
4  Condition 2     1.0   NaN
5  Condition 2     1.1  1.05
6  Condition 2     1.2  1.15
7  Condition 2     1.3  1.25

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM