pandas行转列melt用法
时间: 2023-10-30 22:58:23 浏览: 182
在pandas中,可以使用`pd.melt()`函数来进行行转列的操作。该函数可以将列的部分转换成行,也被称为宽表转长表。除了`pd.melt()`之外,还有其他一些方法也可以实现这个功能,比如`pd.wide_to_long()`、`pd.lreshape()`和`pd.DataFrame().stack()`等方法。
下面是使用`pd.melt()`函数的用法示例:
```python
df1 = pd.melt(df, id_vars=['商店'], value_vars=['品种1', '品种2', '品种3'], var_name='品种', value_name='数量')
```
在上述示例中,`df`是要进行转换的DataFrame,`id_vars`参数指定要保留的列,`value_vars`参数指定要转换的列,`var_name`参数指定转换后的列名,`value_name`参数指定转换后的值的列名。这样,就可以将原先作为列的部分转换成行了。
如果还有其他列也需要进行转换,可以使用`.stack()`方法来将剩余的列转换成行,并使用`.unstack('品种')`将索引'品种'转换成列名。下面是示例代码:
```python
df1 = df.set_index(['商店', '品种']).stack().unstack('品种')
print(df1)
```
在上述示例中,`df`是要进行转换的DataFrame,`.set_index(['商店', '品种']).stack()`将'商店'和'品种'设置为索引,并将剩余的列转换为行,`.unstack('品种')`将索引'品种'转换成列名,实现了行转列的效果。
除了上述的方法,还可以使用`Pandas.Series.str.split("/")`结合`expand=True`参数来实现行转列的功能。在这种方法中,首先使用`str.split("/")`函数将包含多个值的单元格拆分成多个列,然后使用`expand=True`参数将这些列展开。下面是示例代码:
```python
df1 = df['列名'].str.split("/", expand=True)
```
在上述示例中,`df['列名']`是要进行拆分的列,`.str.split("/", expand=True)`将该列中包含的多个值拆分成多列并展开,实现了行转列的效果。
阅读全文