首页 >后端开发 >Python教程 >如何使用 Pandas 将长数据重塑为具有多个变量的宽格式?

如何使用 Pandas 将长数据重塑为具有多个变量的宽格式?

Barbara Streisand
Barbara Streisand原创
2024-10-30 07:38:27630浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn