【问题标题】:Adding a column to a Pandas DataFrame as a copy将列作为副本添加到 Pandas DataFrame
【发布时间】:2019-02-02 05:02:35
【问题描述】:

我有一个名为 original 的 pandas DataFrame,我想向其中添加一个新列并将生成的 DataFrame 保存在一个名为 modified 的变量中。我怎么做?

import pandas as pd
import numpy as np
original = pd.DataFrame(np.random.randn(5, 2), columns=['a', 'b'])

在名称非常相似的问题中给出的解决方案是:

original['c'] = original['b'].abs()

这对我不起作用,因为它修改了 original DataFrame。一个潜在的解决方案是使用连接,但这不允许我命名它,也不允许它填充标量值:

modified = original.join(original['b'].abs(),rsuffix='_abs')

目的是能够在没有临时变量的情况下将列添加在一行中,以达到以下效果:

modified = original.some_op() \
    .a_different_op() \
    .add_a_column() \ # <- the step I can't figure out
    .another_op() \
    .final_op()

【问题讨论】:

  • 先复制再添加? modified = original.copy(); modified['c'] = ...
  • 为什么不直接使用临时变量并重命名和/或填充它?
  • 原因很简单。上述风格避免了创建新的中间标识符,这些标识符会立即被丢弃,并使复杂的数据转换更容易遵循。
  • 立即丢弃标识符是什么意思?
  • 我的意思是用过一次,再也没碰过。 @PhillipCloud,感谢顺便说一句对熊猫的贡献。

标签: python pandas


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2014-05-19
    • 2020-12-28
    • 2017-05-21
    相关资源
    最近更新 更多