我试图用pandas(df_input)编写一个读取输入csv文件的代码,然后在列表中出现任何变量时使用re.findall。此列表是从另一个.csv文件导入的,其中列[0](df_expression)包含我希望代码搜索的变量,列[1](df_translation)包含我希望代码在返回时返回的值。完全符合。这样,当我搜索像勃艮第'和'栗色'它被翻译成红色'。我一直在尝试这个设置,所以我可以在我的表达式翻译中进行更改,而无需更改代码本身。
df_name = df_input[0]
def expression(expr, string):
return True if len(re.findall(r'\b' + expr + r'\b', string, re.I)) > 0 else False
resultlist = []
for lineIndex in range(0, len(df_input)):
matches_list = []
for expIndex in range(0, len(df_expressions)):
if expression(str(df_expressions.ix[expIndex]), str(df_name.ix[lineIndex])):
matches_list.append(df_translation.ix[expIndex])
df_input['Color'] = resultlist
这些是返回值:
resultlist
[['Black'], ['White'], ['Blue'], ['Red', 'Black'], ['Pink'], .....
在df_input.to_csv(filepath + filename)之后的output.csv中找到的当前输出:
Name,Color
a black car,['Black']
a white paper,['White']
the sky is blue,['Blue']
this product is burgundy and black,['Red, Black']
just pink,['Pink']
首选output.csv:
Name,Color
a black car,Black
a white paper,White
the sky is blue,Blue
this product is burgundy and black,Red;Black
just pink,Pink
是否有可能丢失括号和引号,所以每当我执行df_input.to_csv(filepath + filename)时,我得到一个干净的输出? 我已经尝试过df.replace() - 没有工作,也没有在我的re.findall和其他一些东西的末尾添加[0]。似乎只做str的工作是str(resultlist).replace(),但是索引匹配组合非常混乱。有什么建议吗?
答案 0 :(得分:0)
尝试以下更改并查看其行为。
替换
df_input['Color'] = resultless
使用
df_input['Color'] = [', '.join(c) for c in resultlist]
这应该将无结果变为['Black', 'White', 'Blue', 'Red, Black', 'Pink', ...]