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
答案 0 :(得分:5)
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