Python如何根据DataFrame另一列内容向对应行的list字段追加值
问题原因
你使用的str.append是Pandas针对字符串类型列提供的方法,仅适用于给字符串追加内容。但你的label列每个元素都是Python列表,调用字符串方法自然无法得到预期结果。
正确实现代码
# 1. 构造匹配颜色的掩码,加参数避免大小写、空值报错 color_mask = data['body'].str.contains(r'red|blue', case=False, na=False) # 2. 对匹配到的行的label列表追加元素 data.loc[color_mask, 'label'] = data.loc[color_mask, 'label'].apply(lambda x: x + ['color'])
完整可运行示例
import pandas as pd # 构造测试数据 data = pd.DataFrame({ 'body': ['the sky is blue', 'the apple is red.', "Let's take a walk"], 'label': [['noun'], ['noun'], ['verb']] }) # 执行匹配+追加逻辑 color_mask = data['body'].str.contains(r'red|blue', case=False, na=False) data.loc[color_mask, 'label'] = data.loc[color_mask, 'label'].apply(lambda x: x + ['color']) print(data)
运行后输出和你预期的结果完全一致。
内容的提问来源于stack exchange,提问作者mjoy
相关产品推荐
相关产品推荐

