pandas 行转列
时间: 2023-07-07 09:35:41 浏览: 118
可以使用 pandas 的 `melt()` 函数将行转列。具体操作步骤如下:
1. 先使用 pandas 读取数据,并将需要转换的列指定为索引列。
```python
import pandas as pd
# 读取数据
df = pd.read_csv('data.csv')
# 将需要转换的列指定为索引列
df.set_index(['id', 'name'], inplace=True)
```
2. 使用 `melt()` 函数将行转列。
```python
# 使用 melt() 函数将行转列
df = df.reset_index().melt(id_vars=['id', 'name'], var_name='variable', value_name='value')
```
3. 最后再将索引列重新设置回来。
```python
# 将索引列重新设置回来
df.set_index(['id', 'name', 'variable'], inplace=True)
```
这样就可以将行转列了。
相关问题
pandas 行转列
在pandas中,可以使用melt函数将行转换为列。melt函数的主要参数包括frame、id_vars、value_vars、var_name、value_name、ignore_index和col_level。
1. frame:要转换的数据框。
2. id_vars:要保留的列,不进行转换。
3. value_vars:要进行转换的列。
4. var_name:转换后的列名。
5. value_name:转换后的值名。
6. ignore_index:是否重置索引。
7. col_level:如果列是多级索引,则指定要转换的级别。
下面是一个示例,演示如何使用melt函数将行转换为列:
```python
import pandas as pd
# 创建一个示例数据框
data = {'Name': ['John', 'Mike', 'Sarah'],
'Math': [90, 85, 95],
'English': [80, 75, 85],
'Science': [95, 90, 92]}
df = pd.DataFrame(data)
# 使用melt函数将行转换为列
df_melted = pd.melt(df, id_vars=['Name'], value_vars=['Math', 'English', 'Science'], var_name='Subject', value_name='Score')
# 打印转换后的数据框
print(df_melted)
```
输出结果如下:
```
Name Subject Score
0 John Math 90
1 Mike Math 85
2 Sarah Math 95
3 John English 80
4 Mike English 75
5 Sarah English 85
6 John Science 95
7 Mike Science 90
8 Sarah Science 92
```
这个示例中,我们创建了一个包含姓名、数学、英语和科学成绩的数据框。然后,使用melt函数将数学、英语和科学成绩这三列转换为Subject和Score两列,保留了姓名这一列。最后,打印转换后的数据框。
pandas行转列操作
pandas中的行转列操作可以使用`melt()`函数或`pivot_table()`函数来实现。`melt()`函数将DataFrame中的一列或多列展开成行,而`pivot_table()`函数将行数据重新组织为列数据。
使用`melt()`函数的方法如下所示:
```
df2 = pd.melt(df.reset_index(), id_vars='index', value_vars=['A','B'])
```
其中,`df`是要操作的DataFrame,`reset_index()`函数用于重置索引,`id_vars`参数指定要保留的列,`value_vars`参数指定要展开的列。
使用`pivot_table()`函数的方法如下所示:
```
df1 = pd.pivot_table(df, index='1', values='3', columns='2')
```
其中,`df`是要操作的DataFrame,`index`参数指定分组的列,`values`参数指定要填充的数据列,`columns`参数指定结果中的列名。
阅读全文