dataframe有多个列为列表,也有的列为数值,每一行每一列中列表长度相等、值一一对应,如何把dataframe拆成多行,每一行是列表里面对应的值
时间: 2024-04-11 11:27:25 浏览: 88
要将DataFrame中的列表列和数值列拆分为多行,其中每一行包含列表中的一个值和对应的数值,您可以使用`explode()`函数和`melt()`函数的组合。以下是一个示例代码:
```python
import pandas as pd
# 示例数据
data = {'col1': [['A', 'B'], ['C', 'D', 'E'], ['F']],
'col2': [1, 2, 3],
'col3': [4, 5, 6]}
df = pd.DataFrame(data)
# 使用 explode() 函数展开列表列
df_exploded = df.apply(pd.Series.explode)
# 使用 melt() 函数将数值列转换为行
df_melted = pd.melt(df_exploded, id_vars=['col2', 'col3'], value_name='col1').drop('variable', axis=1)
print(df_melted)
```
在这个例子中,我们使用了与之前相同的示例数据。首先,我们使用`apply()`函数和`pd.Series.explode`方法将每个列表列中的值展开为独立的行。然后,我们使用`melt()`函数将数值列('col2'和'col3')转换为行,并指定了'id_vars'参数来保留数值列以及其对应的值。最后,我们删除了多余的'variable'列,并得到了一个拆分后的DataFrame,其中每一行都包含列表中的一个值和对应的数值。
希望这个例子对您有所帮助!如果您有其他问题,请随时提问。
阅读全文