为什么不能使用`replace`方法用列表替换整数-pandas

所以假设我有一个熊猫数据框,如下所示:


df=pd.DataFrame({'a':[1,2,3,0]})

所以我的目标是在这个数据框中0用[](空列表)替换值,但我做到了:


print(df.replace(0,[]))

但它给了我一个错误:


TypeError: Invalid "to_replace" type: 'int'

我尝试了所有可能的方法,即:


df[df==0]=[]

等等...


但没有任何作用。


所需的输出(以防混淆):


   a

0  1

1  2

2  3

3 []


杨__羊羊
浏览 319回答 2
2回答

Helenr

列表理解是可能的,但因为混合内容 - 数字与列表不推荐:df['a'] = [[] if x == 0 else x for x in df.a]print (df)    a0   11   22   33  []并替换所有列中的所有值:df = df.applymap(lambda x: [] if x == 0 else x)print (df)    a0   11   22   33  []

莫回无

这里有两个问题。首先是熊猫在处理列表时的古怪之处。要用列表替换 DataFrame 中的值,您需要执行以下操作;df.loc[df.a == 0, "a"] = [[] for _ in df[df.a == 0]]这n将根据符合条件 ( df == 0)的项目数创建空列表第二个问题是您的列是整数类型,并且您不能在整数列中存储列表。因此,在分配列表之前,您首先需要先将列类型转换为对象。df = df.astype(object) df.loc[df.a == 0, "a"] = [[] for _ in df[df.a == 0]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python