数据列有很多
时间: 2024-02-24 07:55:03 浏览: 42
如果数据列很多,可以使用 pandas 的 wide_to_long() 函数。假设有一个横表数据如下:
| | id | name | age_2020 | age_2021 | gender |
|---|----|------|----------|----------|--------|
| 0 | 1 | Alice| 20 | 21 | Female |
| 1 | 2 | Bob | 25 | 26 | Male |
| 2 | 3 | Carl | 30 | 31 | Male |
使用 wide_to_long() 函数可以将其转换成纵表数据:
```python
import pandas as pd
data = {
'id': [1, 2, 3],
'name': ['Alice', 'Bob', 'Carl'],
'age_2020': [20, 25, 30],
'age_2021': [21, 26, 31],
'gender': ['Female', 'Male', 'Male']
}
df = pd.DataFrame(data)
melted_df = pd.wide_to_long(df, stubnames='age', i=['id', 'name', 'gender'], j='year').reset_index()
```
这里的 stubnames 参数指定需要转换的列名的前缀,i 参数指定不需要被转换的列,j 参数指定需要被转换的列名前缀。转换后的纵表数据如下:
| | id | name | gender | year | age |
|---|----|------|--------|------|------|
| 0 | 1 | Alice| Female | 2020 | 20 |
| 1 | 2 | Bob | Male | 2020 | 25 |
| 2 | 3 | Carl | Male | 2020 | 30 |
| 3 | 1 | Alice| Female | 2021 | 21 |
| 4 | 2 | Bob | Male | 2021 | 26 |
| 5 | 3 | Carl | Male | 2021 | 31 |
其中,year 列为转换后的列名后缀,age 列为原来列中的值。
阅读全文