假设我们在熊猫数据框的查询列中有值,这些值使用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)
但仍然没有什么对我有用。 你能在这里提出一些建议。任何帮助将不胜感激。
答案 0 :(得分:1)
如果需要使用pandas DataFrame
,您需要先将string
值转换为list
str.strip
和str.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)