如何在Pandas中将大数据框的行内列表拆分为三列?
拆分DataFrame行内列表为多列的高效方法
嘿,这个问题在处理批量数据时太常见了,300多行完全不用担心,我给你几个简单又高效的方案,轻松搞定:
方法一:利用tolist()直接构造新DataFrame(推荐,速度最快)
这个方法是向量式操作,比逐行处理快得多,不管数据量多大都适用:
import pandas as pd # 假设你的原DataFrame叫做df new_df = pd.DataFrame(df[0].tolist(), columns=['Code', 'Status', 'TaskID'])
解释:
df[0]是你存储列表的那一列(Series类型)tolist()会把整个Series转换成一个二维列表,每个子列表对应原行的三个元素- 直接用
pd.DataFrame()构造新表,还可以通过columns参数给新列指定有意义的名字
如果原DataFrame还有其他列需要保留,直接用concat合并即可:
# 保留原DataFrame的其他列 + 新拆分的列 final_df = pd.concat([df.drop(0, axis=1), new_df], axis=1)
方法二:用apply(pd.Series)拆分
这个方法更直观,适合刚接触Pandas的朋友,300行的数据量完全没问题:
# 拆分列表为三列,同时命名 new_df = df[0].apply(pd.Series).rename(columns={0:'Code', 1:'Status', 2:'TaskID'})
注意:
如果数据量达到几万甚至几十万行,apply的速度会比第一种方法稍慢,但300行的话几乎没差别。
示例效果
运行上述代码后,你的数据会从原来的单列表格,变成这样的结构:
| Code | Status | TaskID | |
|---|---|---|---|
| 0 | 121 | Issued | 10112 |
| 1 | 121 | Assigned | 10112 |
| 2 | 121 | Completed | 10112 |
| 3 | 121 | Issued | 10113 |
| ... | ... | ... | ... |
内容的提问来源于stack exchange,提问作者user13424992
相关产品推荐
相关产品推荐

