在Pandas中,我们可以通过折叠(或叫转换)多个列,将列索引转换为行索引。这可能很有用,当我们需要汇总或聚合数据时,或者想要显示数据的多个方面时。
下面是一个例子,说明如何折叠多个列:
首先,我们创建一个示例DataFrame:
import pandas as pd
data = {'Name': ['Jerry', 'Tom', 'Micky', 'Minnie'],
'Book_1': [20, 18, 22, 19],
'Book_2': [15, 13, 16, 14],
'Book_3': [25, 27, 26, 23]}
df = pd.DataFrame(data)
运行以上代码,我们得到如下的DataFrame:
Name | Book_1 | Book_2 | Book_3 | |
---|---|---|---|---|
0 | Jerry | 20 | 15 | 25 |
1 | Tom | 18 | 13 | 27 |
2 | Micky | 22 | 16 | 26 |
3 | Minnie | 19 | 14 | 23 |
我们可以看到,这个DataFrame包含了4个人的书籍信息,每个人都有3本书,而每本书都是一个单独的列。
接下来,我们可以使用pd.melt()
函数,把列转换为行:
melted = pd.melt(df, id_vars=['Name'], value_vars=['Book_1', 'Book_2', 'Book_3'],
var_name='Book', value_name='Score')
在上面的代码中,我们指定了Name
列作为标识符,并指定要转换的列是Book_1
、Book_2
和Book_3
。var_name
参数设置了新生成的“变量名”列的名称,而value_name
参数则设置了新生成的“值”列的名称。
最后,运行上面的代码后,我们得到了如下的DataFrame:
Name | Book | Score | |
---|---|---|---|
0 | Jerry | Book_1 | 20 |
1 | Tom | Book_1 | 18 |
2 | Micky | Book_1 | 22 |
3 | Minnie | Book_1 | 19 |
4 | Jerry | Book_2 | 15 |
5 | Tom | Book_2 | 13 |
6 | Micky | Book_2 | 16 |
7 | Minnie | Book_2 | 14 |
8 | Jerry | Book_3 | 25 |
9 | Tom | Book_3 | 27 |
10 | Micky | Book_3 | 26 |
11 | Minnie | Book_3 | 23 |
现在,我们已经将原始的DataFrame转换成长格式的数据,每个人和每本书的得分都被转换成了一行数据。接下来,我们可以对数据进行进一步的操作和分析。
总之,在Pandas中,使用pd.melt()
函数将列转换为行是一种非常实用的技巧,可以帮助我们更好地处理和分析数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在Pandas中折叠多个列 - Python技术站