如何在Pandas DataFrame中生成对应字符串值的同长度数组新列
解决Pandas中根据数组列长度生成重复字符串列表的问题
构造示例数据
先还原你的输入DataFrame:
import pandas as pd df = pd.DataFrame({ 'string_col': ['fruits', 'flowers', 'animals'], 'array_col': [['apple', 'banaana'], ['rose', 'sunflower'], ['lion', 'tiger']] })
三种实现方法
方法1:apply结合列表生成式(简单直观)
直接对每一行处理,用string_col的值重复对应array_col的长度次:
df['new_col'] = df.apply(lambda row: [row['string_col']] * len(row['array_col']), axis=1)
方法2:矢量化分组(大数据集更高效)
避免apply的循环,用矢量化操作提升性能:
df['new_col'] = df['string_col'].repeat(df['array_col'].str.len()).groupby(level=0).agg(list)
方法3:列表推导式(速度快,代码简洁)
利用Python原生列表推导,效率优于apply:
df['new_col'] = [[s] * len(arr) for s, arr in zip(df['string_col'], df['array_col'])]
最终输出结果
处理后得到的DataFrame如下:
| string_col | array_col | new_col |
|---|---|---|
| fruits | ['apple', 'banaana'] | ['fruits', 'fruits'] |
| flowers | ['rose', 'sunflower'] | ['flowers', 'flowers'] |
| animals | ['lion', 'tiger'] | ['animals', 'animals'] |
内容的提问来源于stack exchange,提问作者Anonymous
相关产品推荐
相关产品推荐

