访问python中的标记化单词

时间:2016-08-12 05:06:15

标签: python pandas

假设我们在熊猫数据框的查询列中有值,这些值使用split()函数进行标记,如

query[4] = "['rain', 'shower', 'head']".

现在我想对单个单词执行一些操作。因此,我将其转换为列表并使用for循环迭代它,如:

l=list(query[4])

for word in l : word=func(word)

但它将每个字母存储在列表中,如 - ['[', "'", 'r', 'a', 'i', 'n', "'", ',',依此类推。

我甚至尝试使用连接功能,即 - ''.join(word)''.join(l)

但仍然没有什么对我有用。 你能在这里提出一些建议。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

如果需要使用pandas DataFrame,您需要先将string值转换为list str.stripstr.split

df = pd.DataFrame({'a':["[rain, shower, head]", "[rain1, shower1, head1]"]})
print (df)
                         a
0     [rain, shower, head]
1  [rain1, shower1, head1]

print (type(df.a.ix[0]))
<class 'str'>

df['a'] = df.a.str.strip('[]').str.split(',')
print (df)

                           a
0     [rain,  shower,  head]
1  [rain1,  shower1,  head1]

print (type(df.a.ix[0]))
<class 'list'>

然后您可以应用自定义功能:

def func(x):
    return x + 'aaa'

def f(L):
    return [func(word) for word in L]

print (df.a.apply(f))    
0       [rainaaa,  showeraaa,  headaaa]
1    [rain1aaa,  shower1aaa,  head1aaa]
Name: a, dtype: object
def f(L):
    return [word + 'aaa' for word in L]

print (df.a.apply(f))    
0       [rainaaa,  showeraaa,  headaaa]
1    [rain1aaa,  shower1aaa,  head1aaa]
Name: a, dtype: object

答案 1 :(得分:0)

您正在看到正确的输出。这条线

query[4] = "['rain', 'shower', 'head']"

表示查询[4]的类型为字符串。要作为数组处理,它应该是['rain', 'shower', 'head']

使用你拥有的内容检查python REPL的输出:

>>> query = "['rain', 'shower', 'head']"
>>> list(query)
>>> ['[', "'", 'r', 'a', 'i', 'n', "'", ',', ' ', "'", 's', 'h', 'o', 'w', 'e', 'r', "'", ',', ' ', "'", 'h', 'e', 'a', 'd', "'", ']']

将赋值更改为数组后,这是REPL中的新输出:

>>> query = ['rain', 'shower', 'head']
>>> list(query)
>>> ['rain', 'shower', 'head']

答案 2 :(得分:0)

您需要将字符串转换为实际列表:

data = eval(query[4])

然后遍历数据:

for word in data: word = func(word)