我有类似于这个字典的数据,我正在使用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'