[英]An efficient way to add a new column to Pandas dataframe based on sub-groups of another column
[英]Efficient way to add new column to pandas dataframe
我知道向pandas数据帧添加新列的两种方法
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)')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.