如何在Pandas中向numpy.ndarray类型列追加元素?代码失效求助
解决Pandas中numpy.ndarray类型列追加字符串的问题
你的代码失效的核心原因:league列是numpy.ndarray类型,直接用x + [team]会报错——numpy数组和Python列表不能直接做加法运算,得用numpy专用的追加方法,或者先转成列表操作。
修正后的代码方案
方案1:兼容numpy数组与普通列表的写法
import numpy as np import pandas as pd def filter_by_player(df, players, team): # 筛选目标行并创建副本,避免SettingWithCopy警告 filtered_df = df[df['player'].isin(players)].copy() # 针对numpy数组用np.append,普通列表直接追加 filtered_df['league'] = filtered_df['league'].apply( lambda x: np.append(x, team) if isinstance(x, np.ndarray) else x + [team] ) return filtered_df
方案2:仅针对numpy数组的简化写法
如果确定league列全是numpy.ndarray类型,可以直接用np.append:
import numpy as np import pandas as pd def filter_by_player(df, players, team): filtered_df = df[df['player'].isin(players)].copy() filtered_df['league'] = filtered_df['league'].apply(lambda arr: np.append(arr, team)) return filtered_df
额外说明
- 必须加
.copy():直接切片得到的DataFrame是原数据的视图,直接修改会触发警告,创建副本能确保操作独立安全。 - 若要转回列表类型:如果最终需要的是Python列表而非numpy数组,可在
apply里追加.tolist(),比如lambda arr: np.append(arr, team).tolist()
内容的提问来源于stack exchange,提问作者user872009
相关产品推荐
相关产品推荐

