在Python中克隆或复制列表有哪些选项?
在使用时new_list = my_list,每次都会对new_list更改进行任何修改my_list.为什么是这样?
将空列添加到pandas DataFrame对象的最简单方法是什么?我偶然发现的最好的就像是
df['foo'] = df.apply(lambda _: '', axis=1)
Run Code Online (Sandbox Code Playgroud)
是否有一种不那么不正常的方法?
我想知道为什么列表理解比附加到列表要快得多.我认为差异只是表达,但事实并非如此.
>>> import timeit
>>> timeit.timeit(stmt='''\
t = []
for i in range(10000):
t.append(i)''', number=10000)
9.467898777974142
>>> timeit.timeit(stmt='t= [i for i in range(10000)]', number=10000)
4.1138417314859
Run Code Online (Sandbox Code Playgroud)
列表理解速度提高了50%.为什么?
与此问题类似如何向数据框添加空列?,我有兴趣知道将一列空列表添加到DataFrame的最佳方法.
我要做的是基本上初始化一个列,当我遍历行来处理其中的一些时,然后在这个新列中添加一个填充列表来替换初始化值.
例如,如果以下是我的初始DataFrame:
df = pd.DataFrame(d = {'a': [1,2,3], 'b': [5,6,7]}) # Sample DataFrame
>>> df
a b
0 1 5
1 2 6
2 3 7
Run Code Online (Sandbox Code Playgroud)
然后我想最终得到类似的东西,其中每一行都已单独处理(显示的样本结果):
>>> df
a b c
0 1 5 [5, 6]
1 2 6 [9, 0]
2 3 7 [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)
当然,如果我尝试像df['e'] = []任何其他常量一样初始化,它认为我试图添加长度为0的项目序列,因此失败.
如果我尝试将新列初始化为None或NaN,则在尝试将列表分配给某个位置时会遇到以下问题.
df['d'] = None
>>> df
a b d
0 1 5 None
1 2 6 None
2 3 7 …Run Code Online (Sandbox Code Playgroud)