如何从列表和嵌套列表创建指定列名的Pandas DataFrame
实现方法
你之前的代码将labels的每个子列表作为cat列的单个值存储,所以仅生成两列,没有自动拆分列表为多列的逻辑,可使用以下方法实现需求:
方法1:分块构造后拼接(逻辑最清晰)
import pandas as pd # 原始数据 messages = ['message1', 'message2', 'message3'] labels = [[1,0,1,3,1], [1,1,2,0,3], [0,0,2,1,0]] # 1. 构造消息列 df_message = pd.DataFrame({'message': messages}) # 2. 构造标签列,指定列名 df_labels = pd.DataFrame(labels, columns=[f'cat_{i+1}' for i in range(5)]) # 3. 横向拼接得到最终结果 msgs_labels = pd.concat([df_message, df_labels], axis=1)
方法2:直接构造完整字典生成
import pandas as pd messages = ['message1', 'message2', 'message3'] labels = [[1,0,1,3,1], [1,1,2,0,3], [0,0,2,1,0]] # 先组装完整的字段字典 data = {'message': messages} for col_idx in range(5): data[f'cat_{col_idx+1}'] = [row[col_idx] for row in labels] msgs_labels = pd.DataFrame(data)
最终输出结果
最终得到的msgs_labels共6列,结构如下:
| message | cat_1 | cat_2 | cat_3 | cat_4 | cat_5 |
|---|---|---|---|---|---|
| message1 | 1 | 0 | 1 | 3 | 1 |
| message2 | 1 | 1 | 2 | 0 | 3 |
| message3 | 0 | 0 | 2 | 1 | 0 |
内容的提问来源于stack exchange,提问作者Shaida Muhammad
相关产品推荐
相关产品推荐

