防止 Pandas 在赋值时解包列表

问题描述

从数据框df开始,我想应用字典dict作为翻译表并创建另一列包含翻译结果:

输入:

df=pd.DataFrame({'A': 'foo bar one123 bar foo one324 foo 0'.split(),'B': 'one546 one765 twosde three twowef two234 onedfr three'.split(),'C': 'lol'})

输出

     A       B       C
0   foo    one546   lol
1   bar    one765   lol
2   one123 twosde   lol
3   bar    three    lol
4   foo    twowef   lol
5   one324 two234   lol
6   foo    onedfr   lol
7   0      three    lol

替换字典:

dict={'foo':['blue'],'bar':['red'],'one123':['purple','green']}

对于“A”列中 dict 键的每次出现,我想将 dict 的值分配给新列“D”。请注意,dict 的某些值是包含一两个元素的列表。

for key,value in dict.items():
    df.loc[df['A']==key,'D']=[value]

我尝试在 value 上使用和不使用方括号,所以 value 和 [value] 但结果总是:

ValueError: 使用 ndarray 设置时必须具有相等的 len 键和值

我注意到如果我把 df.loc[df['A']==key,'D']=value,所以在 value 周围没有方括号,我会在第一次替换之前得到错误,而如果我使用方括号,错误出现在最后一个元素['purple','green']之前,所以列表有两个元素。

如何防止 Pandas 尝试解压缩列表并按原样使用值? 谢谢热心解答

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...