我的数据框有两列,一列是Date
,另一列是Location(Object)
数据类型,下面是带有值的位置列格式:
Date Location
1 07/12/1912 AtlantiCity, New Jersey
2 08/06/1913 Victoria, British Columbia, Canada
3 09/09/1913 Over the North Sea
4 10/17/1913 Near Johannisthal, Germany
5 03/05/1915 Tienen, Belgium
6 09/03/1915 Off Cuxhaven, Germany
7 07/28/1916 Near Jambol, Bulgeria
8 09/24/1916 Billericay, England
9 10/01/1916 Potters Bar, England
10 11/21/1916 Mainz, Germany
我的要求是将位置拆分为","
分隔符,并在“位置”列中仅保留其第二部分(ex. New Jersey, Canada, Germany, England etc..)
。我还必须检查它是否只有一个元素(单个元素的值没有“,”)
有没有办法可以使用预定义的方法来实现,而不需要循环每一行?
很抱歉,如果这个问题不符合标准,因为我不熟悉Python并且还在学习。
答案 0 :(得分:2)
直接的方法是apply
split
方法到列的每个元素并选取最后一个:
df.Location.apply(lambda x: x.split(",")[-1])
1 New Jersey
2 Canada
3 Over the North Sea
4 Germany
5 Belgium
6 Germany
7 Bulgeria
8 England
9 England
10 Germany
Name: Location, dtype: object
要检查每个单元格是否只有一个元素,我们可以在列上使用str.contains
方法:
df.Location.str.contains(",")
1 True
2 True
3 False
4 True
5 True
6 True
7 True
8 True
9 True
10 True
Name: Location, dtype: bool
答案 1 :(得分:1)
我们可以试试str.extract
print(df['Location'].str.extract(r'([^,]+$)'))
#0 New Jersey
#1 Canada
#2 Over the North Sea
#3 Germany
#4 Belgium
#5 Germany
#6 Bulgeria
#7 England
#8 England
#9 Germany