python pandas新增加一列_向Python pandas中的现有数据框添加新列

I would like to add a new column, 'e', to the existing data frame and do not change anything in the data frame. (The series always got the same length as a dataframe.)

我假设e中的索引值与df1中的索引值匹配。

启动名为e的新列并为其分配序列e中的值的最简单方法是:df['e'] = e.values

分配(熊猫0.16.0+)

从Pandas 0.16.0开始,您还可以使用^{},它将新列分配给一个DataFrame,并返回一个新对象(一个副本),除了新列之外,还返回所有原始列。df1 = df1.assign(e=e.values)

根据this example(还包括assign函数的源代码),还可以包含多个列:df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

>>> df.assign(mean_a=df.a.mean(), mean_b=df.b.mean())

a b mean_a mean_b

0 1 3 1.5 3.5

1 2 4 1.5 3.5

结合你的例子:np.random.seed(0)

df1 = pd.DataFrame(np.random.randn(10, 4), columns=['a', 'b', 'c', 'd'])

mask = df1.applymap(lambda x: x

df1 = df1[-mask.any(axis=1)]

sLength = len(df1['a'])

e = pd.Series(np.random.randn(sLength))

>>> df1

a b c d

0 1.764052 0.400157 0.978738 2.240893

2 -0.103219 0.410599 0.144044 1.454274

3 0.761038 0.121675 0.443863 0.333674

7 1.532779 1.469359 0.154947 0.378163

9 1.230291 1.202380 -0.387327 -0.302303

>>> e

0 -1.048553

1 -1.420018

2 -1.706270

3 1.950775

4 -0.509652

dtype: float64

df1 = df1.assign(e=e.values)

>>> df1

a b c d e

0 1.764052 0.400157 0.978738 2.240893 -1.048553

2 -0.103219 0.410599 0.144044 1.454274 -1.420018

3 0.761038 0.121675 0.443863 0.333674 -1.706270

7 1.532779 1.469359 0.154947 0.378163 1.950775

9 1.230291 1.202380 -0.387327 -0.302303 -0.509652

这个新特性首次引入时的描述可以在here中找到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值