根据规则' safe'无法将dtype(' int64')中的数组数据投射到dtype(' int32')

时间:2018-04-02 08:04:40

标签: python pandas numpy

我有类似于这个字典的数据,我正在使用Win32位Win7机器。

以下代码在Win64位Win10上正常工作但在Win32中没有。

我得到了这个" TypeError:无法根据规则' safe&d将dtype(' int64')中的数组数据转换为dtype(' int32') #39;"如果我在Win32 Win7上运行它。

我到处搜索答案,不知道在哪里放置.astype(' int32')代码。在我的代码中。

我想要实现的是有行,对于这种情况,第4行,在PA列下,数据是逗号,我想将它们分成下一行以及各自的列" var2&#34 ;和" var3"。在单独的行d中有这样的东西,var2 = 2,var3 = 65。然后,在另一行中,e为var2 = 2且var3 = 65,则在另一行中,f为var2 = 2且var3 = 65。

有人可以帮我这个吗?万分感谢。

import pandas as pd
import numpy as np
a = DataFrame([{'PA': 'a', 'var2': 1, 'var3': 3},
               {'PA': 'b', 'var2': 3, 'var3': 54},
               {'PA': 'c', 'var2': 54,'var3': 3},
               {'PA': 'd,e,f', 'var2': 2, 'var3':65}])

lst_col = 'PA'
x = a.assign(**{lst_col:a[lst_col].str.split(',')})

TS1 = pd.DataFrame({
         col:np.repeat(x[col].values, x[lst_col].str.len())
       for col in x.columns.difference([lst_col])}).assign(**{lst_col:np.concatenate(x[lst_col].values)})[x.columns.tolist()]

错误:

TypeErrorTraceback (most recent call last)
<ipython-input-12-4f61e3646357> in <module>()
     11 TS1 = pd.DataFrame({
     12          col:np.repeat(x[col].values, x[lst_col].str.len())
---> 13        for col in x.columns.difference([lst_col])}).assign(**{lst_col:np.concatenate(x[lst_col].values)})[x.columns.tolist()]
     14 

<ipython-input-12-4f61e3646357> in <dictcomp>((col,))
     11 TS1 = pd.DataFrame({
     12          col:np.repeat(x[col].values, x[lst_col].str.len())
---> 13        for col in x.columns.difference([lst_col])}).assign(**{lst_col:np.concatenate(x[lst_col].values)})[x.columns.tolist()]
     14 

D:\Users\gexakz\AppData\Local\Continuum\anaconda2\lib\site-packages\numpy\core\fromnumeric.pyc in repeat(a, repeats, axis)
    421 
    422     """
--> 423     return _wrapfunc(a, 'repeat', repeats, axis=axis)
    424 
    425 

D:\Users\gexakz\AppData\Local\Continuum\anaconda2\lib\site-packages\numpy\core\fromnumeric.pyc in _wrapfunc(obj, method, *args, **kwds)
     60     # a downstream library like 'pandas'.
     61     except (AttributeError, TypeError):
---> 62         return _wrapit(obj, method, *args, **kwds)
     63 
     64 

D:\Users\gexakz\AppData\Local\Continuum\anaconda2\lib\site-packages\numpy\core\fromnumeric.pyc in _wrapit(obj, method, *args, **kwds)
     40     except AttributeError:
     41         wrap = None
---> 42     result = getattr(asarray(obj), method)(*args, **kwds)
     43     if wrap:
     44         if not isinstance(result, mu.ndarray):

TypeError: Cannot cast array data from dtype('int64') to dtype('int32') according to the rule 'safe'

0 个答案:

没有答案