【发布时间】: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,感谢顺便说一句对熊猫的贡献。