2017-02-27 104 views
-1

我目前运行以下脚本,它使用Fuzzylogic从列表中替换一些常见单词。 Dataframe df1包含我可能值的默认列表。 Dataframe df2是参考Dataframe df1后进行转换/更改的主要数据帧。代码如下:熊猫数据框包含列表

df1 = pd.DataFrame(['one','two','three','four','five','tsst']) 
df2 = pd.DataFrame({'not_shifted':[np.nan,'one','too','three','fours','five','six',np.nan,'test']}) 
# Drop nan value 
df2=pd.DataFrame(df2['not_shifted'].fillna(value='')) 
df2['not_shifted'] = df2['not_shifted'].map(lambda x: difflib.get_close_matches(x, df1[0])) 

问题是输出是一个包含方括号的数据帧。更糟糕的是,没有一个文本内df2['not_shifted']是可视/可调出:

Out[421]: 
    not_shifted 
0   [] 
1  [one] 
2  [two] 
3  [three] 
4  [four] 
5  [five] 
6   [] 
7   [] 
8  [tsst] 

请帮助。

+1

'df2.not_shifted.apply(拉姆达X:X [0]如果len(x)= 0,否则, “!”)'或'简单地DF2 .not_shifted.str [0]'。 – Psidom

回答

1

df2.not_shifted.apply(lambda x: x[0] if len(x) != 0 else "")或简单地df2.not_shifted.str[0]由@Psidom解决

0
def replace_all(eg): 
    rep = {"[":"", 
     "]":"", 
     "u":"", 
     "}":"", 
     "'":"", 
     '"':"", 
     "frozenset":""} 
    for i,j in rep.items(): 
     eg = eg.replace(i,j) 
    return eg 

for each in df.columns: 
    df[each] = df[each].apply(lambda x : replace_all(str(x))) 
+0

欢迎来到StackOverflow。考虑在代码中添加一些注释以使其对其他代码更有用。另外我想知道它是否适用于这种不一致的缩进。最好的祝福 – YakovL