如何为Pandas DataFrame每行添加列表类型的'cities'列?
给Pandas DataFrame新增列表类型列的正确方法
当直接给DataFrame赋值列表来新增列时,Pandas会默认尝试将列表拆分为元素匹配行,无法实现每行都是单个列表的效果。以下是几种可行的实现方式:
方法1:列表推导式生成重复列表列
通过列表推导式创建长度与DataFrame行数一致的新列表,每个元素都是目标列表,再赋值给新列:
import pandas as pd data = {'name':['john', 'ray', 'tony']} df = pd.DataFrame(data) # 为每行生成相同的列表值 df['cities'] = [['NY', 'LN', 'PK', 'SF'] for _ in range(len(df))]
方法2:使用apply方法逐行赋值
利用apply方法按行返回目标列表,指定axis=1确保操作针对每行:
df['cities'] = df.apply(lambda x: ['NY', 'LN', 'PK', 'SF'], axis=1)
方法3:通过pd.Series构造列
直接创建元素为目标列表的Series,再赋值给DataFrame的新列:
df['cities'] = pd.Series([['NY', 'LN', 'PK', 'SF']] * len(df))
执行任意一种方法后,df['cities']的每个元素都会是列表类型,而非字符串,满足需求。
内容的提问来源于stack exchange,提问作者Ussu20
相关产品推荐
相关产品推荐

