防止Pandas在赋值时拆包列表

2024-06-28 20:57:00 发布

您现在位置:Python中文网/ 问答频道 /正文

从dataframedf开始,我想将dictionarydict应用为翻译表,并创建另一个包含翻译结果的列:

输入:

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]都是如此,但结果总是:

ValueError: Must have equal len keys and value when setting with an ndarray

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

我怎样才能防止pandas试图解包列表,只使用原样的值? 谢谢你善意的回答


Tags: key元素df列表foovaluebardict