我需要創建一個名為 convert_to_qtr() 的函式,它將資料框的月值中的月值轉換為季度。下面給出的是下面的月份資料框:-
在 convert_to_qtr() 函式中,我們應該使用以下 if 條件:- ? 如果月份輸入是 Jan-Mar,則函式回傳“Q1” ? 如果月份輸入是 Apr-Jun,則函式回傳“Q2” ? 如果月份輸入為 Jul-Sep,則函式回傳“Q3” ? 如果月份輸入為 Oct-Dec,則函式回傳“Q4”
然后這個函式應該應用于上面提供的月資料框,并且應該創建一個名為 Quarter 的新列,其中包含月份(一月,二月)等每個觀測值的季度,它與 對齊。
quarter = 0
excl_merged['quarter'] = excl_merged[quarter]
excl_merged
def convert_to_quarterly(excl_merged):
if excl_merged['Month'] == 'January' & excl_merged['Month'] == 'February' & excl_merged['Month'] == 'March':
print(excl_merged[quarter] == 'Q1')
elif excl_merged['Month'] == 'April' & excl_merged['Month'] == 'May' & excl_merged['Month'] == 'June':
print(excl_merged[quarter] == 'Q2')
elif excl_merged['Month'] == 'July' & excl_merged['Month'] == 'August' & excl_merged['Month'] == 'September':
print(excl_merged[quarter] == 'Q3')
else:
print(excl_merged[quarter] == 'Q4')
convert_to_quarterly(excl_merged)
我無法正確運行該功能,因此出現錯誤
uj5u.com熱心網友回復:
def convert_to_quarter( month):
months = [ 'January', 'February', 'March', 'April ', 'May', 'June', \
'July', 'August', 'September', 'October', 'November', 'December']
return months.index[ 'month'] // 3
uj5u.com熱心網友回復:
嘗試以下操作:
def convert_to_quarterly(excl_merged):
if excl_merged['Month'] in ['January', 'February', "March"]:
excl_merged[quarter] == 'Q1'
elif excl_merged['Month'] in ["April", "May", "June"]:
excl_merged[quarter] == 'Q2'
elif excl_merged['Month'] in ['July', 'August', 'September']:
excl_merged[quarter] == 'Q3'
elif excl_merged["Month"] in ["November", "December", "December"]:
excl_merged[quarter] == 'Q4'
else:
print("Unkown month name!")
主要問題是您使用的是 and 陳述句。一個月不能是“Januar”和“Fabruary”。
我還建議在使用 & 或 | 時使用方括號 運算子圍繞單個 bool 操作。
最后我會推薦使用 in 運算子來同時測驗所有三個值。它應該更快并且代碼更容易閱讀。
uj5u.com熱心網友回復:
做這樣的事情會不會更容易:
df.Transaction_Timestamp.apply(lambda x: "Q" str(x.quarter))
例子
import pandas as pd
import numpy as np
rng = np.random.default_rng()
df = pd.DataFrame({
"Transaction_Timestamp":pd.date_range("2022-01-01", periods=365),
"Value":rng.integers(0, 100, size=365)
})
df["Qrt"] = df.Transaction_Timestamp.apply(lambda x: "Q" str(x.quarter))
df.head()
Transaction_Timestamp Value Qrt
0 2022-01-01 84 Q1
1 2022-01-02 43 Q1
2 2022-01-03 91 Q1
3 2022-01-04 29 Q1
4 2022-01-05 88 Q1
uj5u.com熱心網友回復:
你需要做兩件事:
- 創建函式 convert_to_qtr() 接受一個月(一月、二月等)并回傳關聯的季度。因此,如果月份是一月,則回傳 1,如果是十二月,則回傳 4,以此類推。例如,對于第一季度的月份,該月份可能是一月或二月或三月。一個月不能同時是一月、二月和三月,這是您的代碼當前正在檢查的內容。此功能也應該在一個月內完成,而不是資料框。
- 將此函式應用于資料框中的“月份”列,并將結果存盤在名為“季度”的新列中。你可以這樣做
df['Quarter'] = df.Month.apply(lambda month: convert_to_qtr(month))
:這就是說:查看月份列,df.Month。然后,對月份列中的每個值呼叫 convert_to_qtr 函式。然后將結果存盤為資料框 Quarter 中的新列。
uj5u.com熱心網友回復:
您可以在 pandas 中使用地圖功能。您需要一本將月份映射到季度的字典。
import pandas as pd
# an sorted list of months
list_of_months =['Jan','Feb','Mar','Apr','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
# creating a dictionary with the months and quarters
d = {}
for i, month in enumerate(list_of_months):
d[month] = 'Q' str(i//3 1)
# example dataframe
df = pd.DataFrame(['Jan','Dec','Mar'],columns=['Month'])
# applying map to series
df['Month'].map(d)
結果看起來像:
Month Quarter
0 Jan Q1
1 Dec Q4
2 Mar Q1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537591.html
標籤:Python熊猫功能
上一篇:TypeError:function()missing1requiredpositionalargument:'y'