我有以下pandas数据帧(pandas 0.20.2,python 3.6.2):
# df=pd.DataFrame([['abc00010 Pathway'],['abc00020 Pathway']], columns=["ENTRY"])
df3=pd.DataFrame(columns=["ENTRY"])
df3.loc[:,"ENTRY"]=[list(['abc00010 Pathway']),list(['abc00020 Pathway'])]
df["ENTRY2"]=df.loc[:,"ENTRY"]
df["ENTRY3"]=df.loc[:,"ENTRY"]
df["ENTRY4"]=df.loc[:,"ENTRY"]
df["ENTRY5"]=df.loc[:,"ENTRY"]
df["ENTRY6"]=df.loc[:,"ENTRY"]
dfcleaner=re.compile(r"\W+?Pathway")
df.loc[:,"ENTRY"]=df.loc[:,"ENTRY"].apply(str)
df.loc[:,"ENTRY"].replace(dfcleaner,"", inplace=True, regex=True)
df.loc[:,"ENTRY2"]=df.loc[:,"ENTRY2"].apply(str)
df.loc[:,"ENTRY2"].replace(dfcleaner,"")
df.loc[:,"ENTRY3"].replace(dfcleaner,"", inplace=True, regex=True)
df["ENTRY4"]=df.loc[:,"ENTRY4"].str.replace(dfcleaner,"")#>NANA
df.loc[:,"ENTRY5"]=df.loc[:,"ENTRY5"].replace(dfcleaner,"", inplace=True, regex=True)
df.loc[:,"ENTRY6"]=df.loc[:,"ENTRY6"].replace(dfcleaner,"", regex=True)
ENTRY ENTRY2 ENTRY3 ENTRY4 ENTRY5 ENTRY6
0 ['abc00010'] ['abc00010 Pathway'] ['abc00010 Pathway'] nan None ['abc00010 Pathway']
1 ['abc00020'] ['abc00020 Pathway'] ['abc00020 Pathway'] nan None ['abc00020 Pathway']
我希望ENTRY2以及ENTRY3和ENTRY6不会被更改,因为它们不是字符串,也没有被转换成字符串,或者ENTRY5作为place替换将返回none。在
我没想到的是字符串访问器的ENTRY4行为。你能给我解释一下吗?不能决定是否是一个错误,它还没有报告,如果它是一个。。。在
编辑了上面的代码,因为第一个代码没有给出与我想要的完全相似的df/与代码中的结果匹配的df
所有列都是
object
(string)数据类型:这就是
^{pr2}$inplace=True
的工作原理。当使用inplace=False
时,您可以将返回的DF赋值(默认值):或者就地更新-在这种情况下,返回
None
,因此我们应该而不是将其分配回:我无法使用您的代码再现
ENTRY4
“问题”(Pandas 0.20.1):相关问题 更多 >
编程相关推荐