df=pd.DataFrame({"a":[1,2,3,[4,5],["apple","pear"]]})
df.replace({[4,5]:4.5})
df.replace({["apple","pear"]:"apple"})
在这里,我得到了TypeError。我要替换特定列表,并且要替换的列表和用于替换列表的对象之间没有任何规定。
这不是一个小问题,因为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] 删除。
我来说两句