为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

杨__羊羊 2021-08-24 15:23:26
所以假设我有一个熊猫数据框,如下所示:df=pd.DataFrame({'a':[1,2,3,0]})所以我的目标是在这个数据框中0用[](空列表)替换值,但我做到了:print(df.replace(0,[]))但它给了我一个错误:TypeError: Invalid "to_replace" type: 'int'我尝试了所有可能的方法,即:df[df==0]=[]等等...但没有任何作用。所需的输出(以防混淆):   a0  11  22  33 []
查看完整描述

2 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

列表理解是可能的,但因为混合内容 - 数字与列表不推荐:


df['a'] = [[] if x == 0 else x for x in df.a]


print (df)


    a

0   1

1   2

2   3

3  []

并替换所有列中的所有值:


df = df.applymap(lambda x: [] if x == 0 else x)

print (df)

    a

0   1

1   2

2   3

3  []


查看完整回答
反对 回复 2021-08-24
?
莫回无

TA贡献1865条经验 获得超7个赞

这里有两个问题。首先是熊猫在处理列表时的古怪之处。要用列表替换 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]]


查看完整回答
反对 回复 2021-08-24
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信