python – 如何将Pandas数据框中的多个列弹出到新的数据框中?
发布时间:2020-12-20 11:03:02 所属栏目:Python 来源:网络整理
导读:假设我有以下内容: df = pd.DataFrame({'a':range(2),'b':range(2),'c':range(2),'d':range(2)}) 我想从数据
假设我有以下内容:
df = pd.DataFrame({'a':range(2),'b':range(2),'c':range(2),'d':range(2)}) 我想从数据帧“弹出”两列(‘c’和’d’)到一个新的数据帧,在原始df中留下’a’和’b’.以下不起作用: df2 = df.pop(['c','d']) 这是我的错误: TypeError: '['c','d']' is an invalid key 有没有人知道一个快速,优雅的解决方案,除了做以下? df2 = df[['c','d']] df3 = df[['a','b']] 我知道上面的代码输入并不是那么繁琐,但这就是DataFrame.pop发明的原因 – 在数据库中弹出一列时为我们省了一步. 解决方法
这将是一个两步过程(你不能解决这个问题,因为正如所提到的,pop适用于单个列并返回一个Series).
首先,切片df(步骤1),然后删除这些列(步骤2). df2 = df[['c','d']].copy() del df[['c','d']] # df.drop(['c','d'],axis=1,inplace=True) 这是使用pd.concat的丑陋替代方案: df2 = pd.concat([df.pop(x) for x in ['c','d']],1) 这仍然是一个两步过程,但你是在一行中完成的. df a b 0 0 0 1 1 1 df2 c d 0 0 0 1 1 1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |