在Pandas DataFrame中添加一列作为副本

5

我有一个名为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()

这对我来说不起作用,因为它修改了原始数据框。一个潜在的解决方案是使用join,但这不允许我命名它,也不允许它被填充标量值:

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()

2
先复制再添加?modified = original.copy(); modified['c'] = ... - Viktor Kerkez
1
为什么不直接使用一个临时变量,然后重命名或填充它呢? - Phillip Cloud
1
为什么这样做很简单。上述风格避免创建新的中间标识符,这些标识符将立即被丢弃,并使复杂的数据转换更易于跟踪。 - Roger
你指的是立即丢弃的标识符是什么意思? - Phillip Cloud
我的意思是只使用了一次,然后再也没有碰过了。顺便说一句,感谢PhillipCloud为pandas做出的贡献。 - Roger
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接