Pandas中的简单列拆分

时间:2014-01-12 22:21:23

标签: python python-2.7 csv pandas dataframe

我在CSV中有这样的东西:

 phone                            name     area
 (444) 444-4444, (000) 000-0000   Foo      cityname, ST
 (555) 555-5555                   Bar      othercity, SN

我如何才能最简单地达到这个目标:

 phone            name     area       State
 (444) 444-4444   Foo      cityname   ST
 (555) 555-5555   Bar      othercity  SN

这是两个基本的分裂 - 在第一个,我想摆脱['手机']的第一个索引之后的所有内容,但在第二个,我想在['area']的逗号之后添加所有内容['State'] - 我认为学习这两种方法会很棒。

在实际文件中,CSV用逗号分隔,字段使用引号:它是标准的csv。我使用空白表来显示问题。

1 个答案:

答案 0 :(得分:1)

import pandas as pd
#df = pd.read_csv('file.csv', dtype={'area': str, 'phone': str})
df=pd.DataFrame(columns=['phone','name','area'],
                data=[['(444) 444-4444, (000) 000-0000', 'Foo', 'cityname, ST'],
                      ['(555) 555-5555',   'Bar', 'othercity, SN']])
print df
df['State'] = df.area.apply(lambda x: x.split(',')[1] if len(x.split(','))>1 else '')
df.area = df.area.apply(lambda x: x.split(',')[0])
df.phone = df.phone.apply(lambda x: x.split(',')[0])
print df

输出:

                            phone name           area
0  (444) 444-4444, (000) 000-0000  Foo   cityname, ST
1                  (555) 555-5555  Bar  othercity, SN
            phone name       area State
0  (444) 444-4444  Foo   cityname    ST
1  (555) 555-5555  Bar  othercity    SN