当我们需要对 Pandas DataFrame 进行行和列的转置操作时,可以调用 transpose()
方法来实现,该方法返回一个新的转置后的 DataFrame。下面是具体的详细步骤:
1. 创建一个 DataFrame
在进行 DataFrame 的转置操作之前,首先需要创建一个 DataFrame 对象。我们可以使用 Pandas 中的 DataFrame()
函数来创建:
import pandas as pd
# 创建 DataFrame 对象
df = pd.DataFrame({
'Name': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Height': [165, 175, 185]
})
上述代码创建了一个名为 df
的 DataFrame,包含三列(Name,Age,Height)和三行数据。
2. 转置 DataFrame
使用 transpose()
方法来转置 DataFrame,得到一个新的转置后的 DataFrame 对象:
# 转置 DataFrame
df_transpose = df.transpose()
上述代码中,我们使用 transpose()
方法将原始的 DataFrame df
转置,并将转置后的结果保存到 df_transpose
变量中。
3. 输出转置后的 DataFrame
接下来,我们可以通过打印输出来查看转置后的结果:
# 打印输出转置后的 DataFrame
print(df_transpose)
输出结果如下:
0 1 2
Name Alice Bob Charlie
Age 25 30 35
Height 165 175 185
可以看到,转置后的 DataFrame df_transpose
中,原来的三列变成了三行,原来的三行变成了三列。
示例一:使用 transpose() 方法对实际数据进行操作
下面,我们以一个实际示例来说明如何使用 transpose()
方法来进行操作。假设我们有一个超市的销售数据,存储在一个名为 sales_data
的 DataFrame 中,其中每一行表示一天的销售情况,每一列表示一种商品的销售量。
import pandas as pd
# 创建 DataFrame 对象
sales_data = pd.DataFrame({
'Day1': [100, 200, 300, 400],
'Day2': [200, 300, 400, 500],
'Day3': [300, 400, 500, 600],
'Day4': [400, 500, 600, 700]
}, index=['ProductA', 'ProductB', 'ProductC', 'ProductD'])
现在,我们需要将每个商品的销售数据转置为每天的销售数据。我们可以使用 transpose()
方法来转置 DataFrame,得到一个新的转置后的 DataFrame 对象:
# 转置 DataFrame
sales_data_transpose = sales_data.transpose()
上述代码中,我们使用 transpose()
方法将原始的 DataFrame sales_data
转置,并将转置后的结果保存到 sales_data_transpose
变量中。
接下来,我们可以通过打印输出来查看转置后的结果:
# 打印输出转置后的 DataFrame
print(sales_data_transpose)
输出结果如下:
ProductA ProductB ProductC ProductD
Day1 100 200 300 400
Day2 200 300 400 500
Day3 300 400 500 600
Day4 400 500 600 700
可以看到,转置后的 DataFrame sales_data_transpose
中,原来的四列变成了四行,原来的四行变成了四列,完成了我们的需求。
示例二:使用 pivot() 方法进行转置
除了使用 transpose()
方法外,我们还可以使用 Pandas 中的 pivot()
方法来进行 DataFrame 的转置操作。pivot()
方法与 transpose()
方法的区别在于,pivot()
方法可以同时对索引和列名进行操作,更加灵活。下面,我们以一个实际示例来说明如何使用 pivot()
方法来进行操作。
假设我们有一个超市的销售数据,存储在一个名为 sales_data
的 DataFrame 中,其中每一行表示一天的销售情况,每一列表示一种商品的销售量。
import pandas as pd
# 创建 DataFrame 对象
sales_data = pd.DataFrame({
'Day1': [100, 200, 300, 400],
'Day2': [200, 300, 400, 500],
'Day3': [300, 400, 500, 600],
'Day4': [400, 500, 600, 700]
}, index=['ProductA', 'ProductB', 'ProductC', 'ProductD'])
现在,我们需要将每个商品的销售数据转置为每天的销售数据。我们可以使用 pivot()
方法来进行转置操作。具体步骤如下:
1. 重置索引
由于 pivot()
方法需要对索引和列名进行操作,因此我们需要先将原始 DataFrame 的索引重置:
# 重置索引
sales_data_reset_index = sales_data.reset_index()
上述代码中,我们使用 reset_index()
方法将原始的 DataFrame sales_data
的索引重置,并将结果保存到 sales_data_reset_index
变量中。现在,新的 DataFrame 中,原先的索引变成了一列名为 index
的普通列。
2. 使用 pivot() 方法进行转置
接下来,我们使用 pivot()
方法进行转置操作,将每个商品的销售数据转置为每天的销售数据:
# 使用 pivot() 方法进行转置
sales_data_pivot = sales_data_reset_index.pivot(index='index', columns='level_0', values=0)
上述代码中,我们使用 pivot()
方法来对 DataFrame 进行转置操作。其中,index='index'
表示将 sales_data_reset_index
DataFrame 中名为 index
的列作为新 DataFrame 的索引,columns='level_0'
表示将 sales_data_reset_index
DataFrame 中名为 level_0
的列作为新 DataFrame 的列名,values=0
表示将 sales_data_reset_index
DataFrame 中的第一列作为新 DataFrame 的值。在这个示例中,level_0
表示原始 DataFrame 的列名,0 表示原始 DataFrame 中的第一列值。最终,我们得到了一个转置后的 DataFrame sales_data_pivot
。
3. 重命名索引和列名
由于转置后的 DataFrame 中,索引和列名的名称都不太符合我们的要求,因此我们需要重命名它们:
# 重命名索引和列名
sales_data_pivot.index.name = 'Day'
sales_data_pivot.columns.name = 'Product'
上述代码中,我们使用 index.name
属性和 columns.name
属性来重命名索引和列名。
4. 打印输出结果
最后,我们可以通过打印输出来查看转置后的结果:
# 打印输出转置后的 DataFrame
print(sales_data_pivot)
输出结果如下:
Product ProductA ProductB ProductC ProductD
Day
Day1 100 200 300 400
Day2 200 300 400 500
Day3 300 400 500 600
Day4 400 500 600 700
可以看到,转置后的 DataFrame sales_data_pivot
中,原来的四列变成了四行,原来的四行变成了四列,完成了我们的需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas.DataFrame行和列的转置的实现 - Python技术站