我在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。我使用空白表来显示问题。
答案 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