(Python,Pandas) - 如何将所有内容放在某个字符的左侧?

Kel*_*ean 0 python python-2.7 pandas

我有一列,market_area我想通过仅保留连字符左侧的字符串部分来缩写该列。

比如我的数据是这样的:

import pandas as pd
tmp = pd.DataFrame({'market_area': ['San Francisco-Oakland-San Jose',
                                    None, 
                                    'Dallas-Fort Worth', 
                                    'Los Angeles-Riverside-Orange County'],
                    'val': [1,2,3,4]})
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

['San Francisco', None, 'Dallas', 'Los Angeles']
Run Code Online (Sandbox Code Playgroud)

我可以根据连字符进行分割:

tmp['market_area'].str.split('-')
Run Code Online (Sandbox Code Playgroud)

但是如何只提取连字符左侧的部分呢?

Psi*_*dom 6

您可以使用以下命令提取拆分列表中的第一个元素.str[0]

tmp.market_area.str.split('-').str[0]
Out[3]:
0    San Francisco
1             None
2           Dallas
3      Los Angeles
Name: market_area, dtype: object
Run Code Online (Sandbox Code Playgroud)

或者使用str.extract带有 regex 的方法^([^-]*).*,它捕获模式直到第一个-

tmp.market_area.str.extract('^([^-]*).*', expand=False)
Out[5]:
0    San Francisco
1              NaN
2           Dallas
3      Los Angeles
Name: market_area, dtype: object
Run Code Online (Sandbox Code Playgroud)