这是系列文章,我会按照stackoverflow上pandas相关问题投票数排序进行整理学习。不学习是会变咸鱼的~
原问题:adding new column to existing DataFrame in Python pandas,添加新的列到原有数据中,我们可以分几种情况来看。
假设原始数据如下:
1 | import pandas as pd |
1)直接赋值
1 | df['a'] = pd.Series(np.random.randn(slen), index=df.index) # index要记得添加 |
2)loc方法
1 | df.loc[:,'d'] = pd.Series(np.random.randn(slen), index=df.index) |
3)insert方法
insert方法使用的列名不能有重复值,连更新都不能
1 | df.insert(len(df.columns), 'e', pd.Series(np.random.randn(slen)), index=df.index) |
4)assign方法
assign方法参数可以是Series、标量、列表,还可以同时添加多列
1 | df = df.assign(f=df.num_wings.mean()) # 将num_wings这列的平均值作为新增列f的结果 |
5)concat方法
1 | pd.concat([df, pd.Series(['yes', 'yes']).rename('t')], axis=1) # 增加列t |
注意点:
- 每个方法的参数都可以是Series、标量、列表
- insert方法中新增的列名不能跟已有的一样,即使更新刚刚新增的列也会出错
df['a']=pd.Series(['no', 'yes']
的index顺序如果被修改,默认是以Series的index为准,可以通过index=df.index
来指定按照原始DataFrame的index顺序