如何将DataFrame的所有列合并为单列新DataFrame?
将多列DataFrame合并为单列DataFrame
问题场景
现有如下结构的DataFrame:
| namelist1 | namelist2 | namelist3 | ... |
|---|---|---|---|
| khalid | sabbir | liton | |
| tamim | sakib | tawhid | |
| taskin | santo | naim |
需要把所有列的内容依次追加到一个新的单列DataFrame中,最终期望结果如下:
| namelistall |
|---|
| khalid |
| sabbir |
| liton |
| tamim |
| sakib |
| tawhid |
| taskin |
| santo |
| naim |
实现方案
方法1:使用melt()函数
melt()是Pandas中宽表转长表的工具,可直接提取所有列的数值生成单列:
import pandas as pd # 构造示例DataFrame(实际使用替换为你的原始数据) df = pd.DataFrame({ 'namelist1': ['khalid', 'tamim', 'taskin'], 'namelist2': ['sabbir', 'sakib', 'santo'], 'namelist3': ['liton', 'tawhid', 'naim'] }) # 生成目标单列DataFrame df_all = pd.melt(df, value_name='namelistall')[['namelistall']] print(df_all)
方法2:使用stack()函数
stack()将列索引转为行索引层级,再重置索引并转换为DataFrame:
# 基于上述示例df df_all = df.stack().reset_index(drop=True).to_frame(name='namelistall') print(df_all)
两种方法均可得到目标结果,stack()在处理大量列时性能更优,melt()逻辑更直观易懂。
内容的提问来源于stack exchange,提问作者Khalid Alsaba
相关产品推荐
相关产品推荐

