首页 > 解决方案 > Pandas 根据索引向 Dataframe 列添加值,如果值存在则追加

问题描述

我根据索引值为列分配值,如果值存在,则将新值附加到旧值

我尝试根据索引将值应用于列,但无法将值附加到列中已有的值

数据框:-

    foo   bar 
0   1     1          
1   2     2     
2   3     3     
3   3     3     

代码 :-

values = ['a', 'b']
for val in values:
   df.loc[df['foo'] == 1, foo2] = val

输出数据框:

    foo   bar   foo2  
0   1     1       b   
1   2     2     
2   3     3     
3   3     3     

预期的数据框:-

    foo   bar   foo2  
0   1     1     a,b  
1   2     2     
2   3     3     
3   3     3     

标签: pythonpandas

解决方案


正如你注意到的那样

df.loc[df['foo'] == 1, foo2] = b

覆盖以前的值,以便您最终只得到b. 您需要以这种方式解决问题是否有特殊原因?您可以编写自定义函数并使用 apply 来附加值,但这不是应该使用 pandas 的方式。我建议创建另一列'foo3'。之后您可以随时加入这些字母。


推荐阅读