小编Tom*_*ker的帖子

使用Python 3.5和Anaconda找不到模块cPickle

我试图在Windows机箱上使用cPickle,使用Anaconda.我使用的是python 3.5.我没有使用virtualenv(虽然可能应该).

当我尝试导入cPickle时,我得到"ImportError:没有名为'cPickle'的模块"

Python 3.5.0 |Anaconda custom (64-bit)| (default, Dec  1 2015, 11:46:22) [MSC v.
1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cPickle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'cPickle'
Run Code Online (Sandbox Code Playgroud)

我的理解是cPickle内置了Python 3.5,所以我无法理解为什么找不到cPickle.知道出了什么问题/如何清理/如何解决问题.

python versioning pickle anaconda

28
推荐指数
2
解决办法
3万
查看次数

如何最好地将包含列表或元组的Pandas列提取到多个列中

我不小心用一个错误复制的链接关闭了这个问题.这是正确的:Pandas将列表列拆分为多列.

假设我有一个数据框,其中一列是一个列表(已知且相同的长度)或元组,例如:

df1 = pd.DataFrame(
 {'vals': [['a', 'b', 'c', 'd'],['e','f','g','h']]}
)
Run Code Online (Sandbox Code Playgroud)

即:

    vals
0   [a, b, c, d]
1   [e, f, g, h]
Run Code Online (Sandbox Code Playgroud)

我想将"vals"中的值添加到单独的命名列中.我可以通过遍历行来笨拙地做到这一点:

for i in range(df1.shape[0]):
   for j in range(0,4):
      df1.loc[i, 'vals_'+j] = df1.loc[i, 'vals'] [j]
Run Code Online (Sandbox Code Playgroud)

结果符合要求:

    vals            vals_0  vals_1  vals_2  vals_3
0   [a, b, c, d]    a       b       c       d 
1   [e, f, g, h]    e       f       g       h
Run Code Online (Sandbox Code Playgroud)

有更整洁(矢量化)的方式吗?我尝试使用[]但是我收到了一个错误.

   for j in range (0,4)
       df1['vals_'+str(j)] = df1['vals'][j]
Run Code Online (Sandbox Code Playgroud)

得到:

ValueError: Length of values does not …
Run Code Online (Sandbox Code Playgroud)

python pandas

3
推荐指数
2
解决办法
994
查看次数

标签 统计

python ×2

anaconda ×1

pandas ×1

pickle ×1

versioning ×1