脚本中的类似CSV的数据到Pandas DataFrame

时间:2013-04-15 18:25:26

标签: python pandas ipython-notebook

我有一个城市列表,其中包含我想要转换为DataFrame的lon,lat值,但我想让用户修改或添加到这些城市, lat,lon值进入IPython笔记本中的单元格。现在我有这个解决方案可行,但似乎有点难看:

import pandas as pd
sta =  array([
        ('Boston',          42.368186, -71.047984),
        ('Provincetown',    42.042745, -70.171180),
        ('Sandwich',        41.767990, -70.466219),
        ('Gloucester',      42.610253, -70.660570)
        ],
        dtype=[('City','|S20'), ('Lat','<f4'), ('Lon', '<f4')])

# Create a Pandas DataFrame
obs = pd.DataFrame.from_records(sta,index='City')
print(obs)
                    Lat        Lon
City                              
Boston        42.368187 -71.047981
Provincetown  42.042744 -70.171181
Sandwich      41.767990 -70.466217
Gloucester    42.610252 -70.660568

是否有更清晰,更安全的方式来创建DataFrame?

我认为人们会忘记括号,在最后一行添加一个结束','等等。

谢谢, 富

1 个答案:

答案 0 :(得分:4)

您可以创建一个他们编辑的大型多行字符串,然后使用read_csv从StringIO对象中读取它:

x = """
City, Lat, Long
Boston, 42.4, -71.05
Provincetown, 42.04, -70.12
"""

>>> pandas.read_csv(StringIO.StringIO(x.strip()), sep=",\s*")
           City    Lat   Long
0        Boston  42.40 -71.05
1  Provincetown  42.04 -70.12

当然,人们仍然会犯这样的错误(例如插入逗号),但格式更简单。