[英]Pandas adding new columns performance issue
我正在嘗試添加 2 個新列來從完整日期中提取日期和月份,我的問題是目前我的數據集有大約 120 萬條記錄,預計到年底將超過 20 m,並添加列需要很長時間,所以我在問最好的做法是什么。
我正在使用 aqlite,這是我的代碼
cnx = sqlite3.connect('data/firstline.db')
df = pd.read_sql_query("SELECT * FROM firstline_srs", cnx)
df['day'] = pd.DatetimeIndex(df['Open_Date']).day
df['month'] = pd.DatetimeIndex(df['Open_Date']).month
df['Product_Name'].replace('', np.nan, inplace=True)
df['Product_Name'].fillna("N", inplace = True)
df['product_Type'].replace('', np.nan, inplace=True)
df['product_Type'].fillna("A", inplace = True)
df['full_path'] = df['Type'] + "/" + df['Area'] + "/" + df['Sub_Area'] + "/" + df['product_Type'] + "/" + df['Product_Name']
非常感謝您一貫的支持:)
如果原始 DataFrame 解決方案中沒有丟失數據,則應該稍微簡化一下。
此外,我認為inplace
不是好的做法,請檢查this和this 。
所有列的組合也是一個不錯的解決方案,最快的解決方案之一,檢查這個。
df = pd.read_sql_query("SELECT * FROM firstline_srs", cnx)
df['Open_Date'] = pd.to_datetime(df['Open_Date'])
df['day'] = df['Open_Date'].dt.day
df['month'] = df['Open_Date'].dt.month
df['Product_Name'] = df['Product_Name'].replace('', 'N')
df['product_Type'] = df['product_Type'].replace('', 'A')
df['full_path'] = df['Type'] + "/" + df['Area'] + "/" + df['Sub_Area'] + "/" + df['product_Type'] + "/" + df['Product_Name']
如果缺失值:
df = pd.read_sql_query("SELECT * FROM firstline_srs", cnx)
df['Open_Date'] = pd.to_datetime(df['Open_Date'])
df['day'] = df['Open_Date'].dt.day
df['month'] = df['Open_Date'].dt.month
df['Product_Name'] = df['Product_Name'].replace('', np.nan).fillna("N")
df['product_Type'] = df['product_Type'].replace('', np.nan).fillna("A")
df['full_path'] = df['Type'] + "/" + df['Area'] + "/" + df['Sub_Area'] + "/" + df['product_Type'] + "/" + df['Product_Name']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.