我正在学习python的例子。也许我必须学习数据结构以完全内化函数,但我希望有人可以在这个阶段帮助我。
现在,我正在清理由熊猫数据框堆叠的文本数据。
我得到了以下结果,我想要做的就是为每个拆分文本提取最后两个元素。
[['Australian Centre for Ancient DNA',
' School of Biological Sciences',
' University of Adelaide',
' Adelaide',
' South Australia 5005',
' Australia'],
['Department of Ecology and Evolutionary Biology',
' Ramaley Biology',
' University of Colorado',
' Boulder',
' CO 80309',
' USA']]
所以,我的试验就像是
df["zip"] = df["Af_split_split"]
i = 0
j = 0
df.iloc[i,7][j] = df.iloc[i,6][j][len(df.iloc[i,6][j])-2:len(df.iloc[i,6][j])-1]
然而,当我尝试它时,数据框中另一列中的元素也被更改。 (参见Af_split的第一行,Af_split_split,zip具有相同的值)
我该如何处理这个问题?
答案 0 :(得分:0)
如果我正确理解您的问题,从您描述的症状来看,您的问题是一个经典问题:您需要复制列表并修改副本而不修改原件。这已经在堆栈溢出时得到了解答,请参见此处:How to clone or copy a list?
对于您的具体示例,解决方案是将您分配给df [“zip”]的行修改为:
df["zip"] = df["Af_split_split"][:]
没有数字的切片操作符将创建列表的新副本(而不是创建指针),以便对副本的修改不会影响原始文件。