Python:如何在数据框中拆分字符串列?

时间:2016-07-30 18:04:48

标签: python python-3.x pandas

我的数据框有两列,一列是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并且还在学习。

2 个答案:

答案 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