替换熊猫数据框中的列表元素

加维
df=pd.DataFrame({"a":[1,2,3,[4,5],["apple","pear"]]})
df.replace({[4,5]:4.5})
df.replace({["apple","pear"]:"apple"})

在这里,我得到了TypeError。我要替换特定列表,并且要替换的列表和用于替换列表的对象之间没有任何规定。

cs95

不是一个小问题,因为DataFrame并非旨在与可变对象(如列表,集合或字典)​​一起使用。

您可以确定匹配索引并进行相应替换。

m = [v == [4, 5] for v in df['a']] 
df.loc[m, 'a'] = 4.5

df
               a
0              1
1              2
2              3
3            4.5
4  [apple, pear]

遵循类似的步骤['apple', 'pair']如果您愿意,可以从中形成一个函数:

def replace(df, col, key, val):
    m = [v == key for v in df[col]]
    df.loc[m, col] = val

replace(df, 'a', [4, 5], 4.5)
replace(df, 'a', ['apple', 'pear'], 'apple')

df
       a
0      1
1      2
2      3
3    4.5
4  apple

注意:该功能可以就地工作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章