欢迎访问宙启技术站
智能推送

如何在Pandas中重塑(reshape)DataFrame的结构

发布时间:2023-12-22 20:57:10

在Pandas中,可以使用不同的方法来重塑(reshape)DataFrame的结构。重塑操作的目的是将数据重新组织成适合分析和可视化的形式。

重塑DataFrame的常用方法包括:pivot、melt、stack和unstack。下面将分别介绍这些方法,并给出使用例子。

1. pivot方法:

pivot方法用于将行数据重塑为列数据。可以将一个或多个列作为索引,并将另一个或多个列作为新的列。这个方法需要定义三个参数:index、columns和values。

使用pivot方法的例子:

import pandas as pd

data = {
    'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
    'category': ['A', 'B', 'A'],
    'value': [1, 2, 3]
}

df = pd.DataFrame(data)
df_pivot = df.pivot(index='date', columns='category', values='value')

print(df_pivot)

输出结果:

category      A    B
date                
2022-01-01  1.0  NaN
2022-01-02  NaN  2.0
2022-01-03  3.0  NaN

2. melt方法:

melt方法用于将宽格式(wide format)的数据转换为长格式(long format)。可以指定需要保留的列或需要转换的列。

使用melt方法的例子:

import pandas as pd

data = {
    'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}

df = pd.DataFrame(data)
df_melt = df.melt(id_vars='date', var_name='category', value_name='value')

print(df_melt)

输出结果:

          date category  value
0  2022-01-01        A      1
1  2022-01-02        A      2
2  2022-01-03        A      3
3  2022-01-01        B      4
4  2022-01-02        B      5
5  2022-01-03        B      6

3. stack方法:

stack方法用于将列标签(column labels)转换为索引(index)。将数据从宽格式转换为长格式。

使用stack方法的例子:

import pandas as pd

data = {
    'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
    'A': [1, 2, 3],
    'B': [4, 5, 6]
}

df = pd.DataFrame(data)
df_stacked = df.set_index('date').stack().reset_index()

print(df_stacked)

输出结果:

          date level_1  0
0  2022-01-01       A  1
1  2022-01-01       B  4
2  2022-01-02       A  2
3  2022-01-02       B  5
4  2022-01-03       A  3
5  2022-01-03       B  6

4. unstack方法:

unstack方法用于将索引转换为列标签。将数据从长格式转换为宽格式。

使用unstack方法的例子:

import pandas as pd

data = {
    'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
    'category': ['A', 'B', 'A'],
    'value': [1, 2, 3]
}

df = pd.DataFrame(data)
df_unstacked = df.set_index(['date', 'category']).unstack().reset_index()

print(df_unstacked)

输出结果:

          date value    
category          A   B
0   2022-01-01     1 NaN
1   2022-01-02   NaN   2
2   2022-01-03     3 NaN

以上是在Pandas中重塑DataFrame结构的常用方法和示例。根据具体的需求和数据形式选择合适的方法进行重塑操作。