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
注意:该函数就地工作。
关于python - 替换 Pandas 数据框中的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322875/