0

我有一个带有关联 lon,lat 值的城市列表,我想将其转换为 DataFrame,但是我不想从 CSV 文件中读取,而是想让用户修改或添加到这些 city,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?

我想人们会忘记括号,在最后一行添加一个结束的“,”等等。

谢谢,丰富

4

1 回答 1

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

当然,人们仍然可能会因此而出错(例如,插入逗号),但格式更简单。

于 2013-04-15T18:38:19.717 回答