假设我有以下内容:
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 的原因——在从数据库中弹出一列时为我们节省一个步骤。
原文由 Sean McCarthy 发布,翻译遵循 CC BY-SA 4.0 许可协议
这必须是一个两步过程(您 无法解决 这个问题,因为如前所述,
pop
适用于单个列并返回一个系列)。首先,切片
df
(第 1 步),然后删除这些列(第 2 步)。这是使用
pd.concat
的单行版本:这仍然是一个两步过程,但您是在一行中完成的。
话虽如此,我认为允许
pop
采用类似列标题的列表是有价值的,适当地返回弹出列的DataFrame。这将是对 GitHub 的一个很好的功能请求,假设有人有时间写一个。