首頁 > 後端開發 > Python教學 > 如何使用 Pandas 將長資料重塑為具有多個變數的寬格式?

如何使用 Pandas 將長資料重塑為具有多個變數的寬格式?

Barbara Streisand
發布: 2024-10-30 07:38:27
原創
632 人瀏覽過

How can I reshape long data into a wide format with multiple variables using Pandas?

使用Pandas 將長資料重塑為寬格式

處理長格式資料時,可能需要將其重塑為寬格式,以便更好地分析和可視化。一個常見的挑戰是根據多個變數重塑資料。

考慮以下資料框:

salesman  height  product  price
Knut      6        bat          5
Knut      6        ball         1
Knut      6        wand         3
Steve     5        pen          2
登入後複製

目標是將這些資料重塑為寬格式:

salesman  height    product_1  price_1  product_2 price_2 product_3 price_3  
Knut      6        bat          5       ball      1        wand      3
Steve     5        pen          2        NA       NA        NA       NA
登入後複製

雖然melt/stack/unstack通常用於重塑數據,但它們可能不適合這種特定場景。

可以使用以下程式碼找到此問題的解決方案:

<code class="python">import pandas as pd

# Create sample data
raw_data = {
    'salesman': ['Knut', 'Knut', 'Knut', 'Steve'],
    'height': [6, 6, 6, 5],
    'product': ['bat', 'ball', 'wand', 'pen'],
    'price': [5, 1, 3, 2]
}

df = pd.DataFrame(raw_data)

# Reshape data
df_wide = df.pivot_table(index=['salesman', 'height'], columns='product', values='price')

# Reset index to get it in the desired format
df_wide = df_wide.reset_index(level=[0, 1])

# Rename columns
new_columns = ['salesman', 'height'] + [f'product_{i}' for i in range(1, df_wide.shape[1] - 1)] + [f'price_{i}' for i in range(1, df_wide.shape[1] - 1)]
df_wide.columns = new_columns

# Handle missing values
df_wide.fillna("NA", inplace=True)</code>
登入後複製

產生的資料幀 df_wide 將採用所需的寬格式。

以上是如何使用 Pandas 將長資料重塑為具有多個變數的寬格式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板