Python 3.3.3
def tuplizeDK(x):
from ast import literal_eval
from pandas import isnull
if isnull(x):
return tuple()
else:
x = x+','
return literal_eval(x)
目标是将输入格式化为unicode对象,该对象由单个数字ID或逗号分隔的数字ID列表组成,然后将其转换为元组。输入可能是空的。
以下是发生的事情:
>>> A = '3233'
>>> tuplizeDK(A)
Traceback (most recent call last):
File "<pyshell#188>", line 1, in <module>
tuplizeDK(A)
File "./tuplize.py", line 4, in tuplizeDK
if isnull(x):
TypeError: a float is required
但如果我只是评估功能:
>>> isnull(A)
False
我确信我错过了一些简单的东西......任何帮助都会受到赞赏。
答案 0 :(得分:1)
我认为,假设您计划将其应用于整个列,更好的方法是使用其中一个向量化字符串方法:str.split
:
In [11]: s = pd.Series(['a', 'b,c', np.nan, 'd,e,f'])
In [12]: s.str.split(',')
Out[12]:
0 [a]
1 [b,c]
2 NaN
3 [d,e,f]
dtype: object