如何从Pandas DataFrame列提取值并拆分为多列?
嘿,这个需求在处理嵌套列表格式的数据时超常见,我给你分享几种实用的实现方法,你可以根据自己的数据集大小和需求选择:
首先先构造一个示例DataFrame来模拟你的数据:
import pandas as pd df = pd.DataFrame({ 'original_col': [[2, 4], [3, 4], [1, 4], [0, 0]] })
方法1:矢量化str访问器(推荐大数据集)
这是速度最快的方法,因为用了Pandas的矢量化操作,避免了逐行循环:
# 提取列表中的第一个和第二个元素作为新列 df['col_1'] = df['original_col'].str[0] df['col_2'] = df['original_col'].str[1] # 如果你不需要原来的列,可以删掉它 df = df.drop('original_col', axis=1)
方法2:apply(pd.Series)拆分(通用型)
如果你的列表长度可能不固定,或者想一次性拆分所有元素,这个方法更灵活:
# 把每个列表转换成Series,自动按位置生成列 split_cols = df['original_col'].apply(pd.Series) # 给新列命名 split_cols.columns = ['col_1', 'col_2'] # 把拆分后的列合并到原DataFrame,再删掉原列 df = pd.concat([df, split_cols], axis=1).drop('original_col', axis=1)
方法3:直接构造新DataFrame(最简洁)
如果原DataFrame只有这一列需要处理,直接用列表生成新的DataFrame最省事:
new_df = pd.DataFrame(df['original_col'].tolist(), columns=['col_1', 'col_2'])
不管用哪种方法,最终得到的结果都是你想要的格式:
col_1 col_2 0 2 4 1 3 4 2 1 4 3 0 0
内容的提问来源于stack exchange,提问作者abhi
相关产品推荐
相关产品推荐

