python - 将新列添加到熊猫数据框的有效方法
问题描述
我知道向熊猫数据框添加新列的两种方法
df_new = df.assign(new_column=default_value)
和
df[new_column] = default_value
第一个不会就地添加列,但第二个会。那么,使用哪一种效率更高呢?
除了这两个,还有比这两个更有效的方法吗?
解决方案
我认为第二个,assign
如果想要链接所有功能的漂亮代码使用 - 一行代码:
df = pd.DataFrame({'A':np.random.rand(10000)})
default_value = 10
In [114]: %timeit df_new = df.assign(new_column=default_value)
228 µs ± 4.26 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [115]: %timeit df['new_column'] = default_value
86.1 µs ± 654 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
我使用 perfplot 进行绘图:
import perfplot
default_value = 10
def chained(df):
df = df.assign(new_column=default_value)
return df
def no_chained(df):
df['new_column'] = default_value
return df
def make_df(n):
df = pd.DataFrame({'A':np.random.rand(n)})
return df
perfplot.show(
setup=make_df,
kernels=[chained, no_chained],
n_range=[2**k for k in range(2, 25)],
logx=True,
logy=True,
equality_check=False,
xlabel='len(df)')
推荐阅读
- java - 如何更改自定义表模型的列标题本地化
- c# - 如何从 Migradoc pdf 中删除表格内的行?
- react-native - Invariant Violation:对象作为 React 子对象无效(找到:带有键 {x,y,z} 的对象
- java - 正则表达式 - 精确的 6 个字符,前 3 个字符可以是 SPA 或 BSA,后 3 个是数字
- python-3.x - 无法使用不同的方法删除空格
- mysql - MySQL中按年龄范围分组和排序
- xamarin.forms - 如何从 web api 分页列表视图分页同步融合中获取 xamarin 表单的 json 数据?
- django - DJANGO
- ruby-on-rails - 如何检查记录是否分页/将分页?
- excel - 为什么我的 For 循环在最后一行之前退出?