使用python在csv文件列中按第一次出现和最后一次出现dash [ - ]分割文本

时间:2018-02-21 14:07:06

标签: python pandas

example.csv

row 
india - manager- intel
india -sales-manager-amazon
banglore -ccm- head - county- jp morgan

我使用过的代码

df = pd.read_csv("example.csv", sep=',')
v = df.pop('row').str.split('-', expand=True)
v.columns = ['location', 'position', 'company']

预期输出

location     position             company   
india        manager               intel  
india        sales-manager         amazon  
banglore     ccm- head - county    jp morgan

数据

Burgess Hill,英国西萨塞克斯郡 - 全球消费者技术高级副总裁兼首席信息官 - 美国运通 英国伦敦 - 技术副总裁 - 工作流程和运营及创始人 - Hogarth Worldwide 英国阿伯丁 - 高级特殊核心分析顾问/技术专家 - COREX集团 英国伦敦 - ED,Equity Derivatives Technology,伦敦 - 摩根士丹利 英国伦敦 - 集团技术部首席商务官 - BP Staines,萨里,英国 - 战略&建筑总监,集团IS - Centrica West Sussex,英国,英国 - VP - Technology - American Express

2 个答案:

答案 0 :(得分:5)

首次出现分隔符时,您可以splitrsplit一起使用

df[['location','position']] = df.pop('row').str.split('-', n=1, expand=True)
df[['position','company']] = df['position'].str.rsplit('-', n=1, expand=True)
print (df)
    location            position     company
0     india              manager       intel
1     india        sales-manager      amazon
2  banglore   ccm- head - county   jp morgan

答案 1 :(得分:2)

使用单个pandas.Series.str.split()操作:

tmp_df = df.pop('row').str.split('-')
df['location'], df['position'], df['company'] = tmp_df.str[0], tmp_df.str[1:-1].str.join(sep='-'), tmp_df.str[-1]

print(df)

输出:

    location            position     company
0     india              manager       intel
1     india        sales-manager      amazon
2  banglore   ccm- head - county   jp morgan