我有一个城市列表,其中包含我想要转换为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?
我认为人们会忘记括号,在最后一行添加一个结束','等等。
谢谢, 富
答案 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
当然,人们仍然会犯这样的错误(例如插入逗号),但格式更简单。