将numpy数组元素转为同日期的独立pandas DataFrame行
解决方法:用pandas的
explode()拆分数组列成多行 这问题我熟!你要的就是把包含numpy数组的列拆分成单行元素,同时保留对应日期不变,pandas的explode()方法正好能完美搞定这个需求,操作起来超简单。
步骤1:构造原DataFrame(方便你复现)
先把你的示例数据用代码还原出来:
import pandas as pd import numpy as np df = pd.DataFrame({ 'date': ['2014-11-26', '2015-12-20', '2016-02-17', '2016-02-23'], 'website+': [np.array(['A']), np.array(['B', 'C']), np.array(['D']), np.array(['E', 'F', 'G'])] })
步骤2:核心操作——拆分数组列
直接调用explode()方法,指定要拆分的列名即可:
# 拆分数组列,自动保留对应date值 result_df = df.explode('website+')
查看结果
运行后你会得到完全符合预期的输出:
date website+ 0 2014-11-26 A 1 2015-12-20 B 1 2015-12-20 C 2 2016-02-17 D 3 2016-02-23 E 3 2016-02-23 F 3 2016-02-23 G
可选:重置索引(如果不需要原索引)
如果觉得原索引重复看着不舒服,可以重置成连续索引:
result_df = result_df.reset_index(drop=True)
重置后的结果索引会变成0,1,2,3,4,5,6,更整洁。
补充说明
explode()不仅支持numpy数组,对普通Python列表也同样有效,只要列里的元素是可迭代对象就行;- 拆分后其他列(比如这里的
date)的值会自动和拆分后的行一一对应,完全不需要手动处理。
内容的提问来源于stack exchange,提问作者jango
相关产品推荐
相关产品推荐

