Re: [问题]pandas重复分割,重复存盘

楼主: localhostphp (A动动)   2015-04-12 12:58:38
# -*- coding: utf-8 -*-
import pandas as pd
from geocodequery import GeocodeQuery
df = pd.read_csv('./birdsIwant3.csv',low_memory=False)
def addrs(location):
gq = GeocodeQuery("zh-tw", "tw")
gq.get_geocode(location)
print location
return pd.Series({"lat": gq.get_lat(), "lng": gq.get_lng()})
def test(location):
return pd.Series({"lat" :5, "lng":10})
df['lat'] = 0
df['lng'] = 0
query_count = 2
loop_count = int(df.shape[0]/query_count)
for lc in range(2):
df.loc[lc*query_count: (lc+1)*query_count, ['lat','lng']] = df[lc*query_count: (lc+1)*query_count]['location'].apply(addrs) ##the problem##
df.to_csv('./birdsIwant3_1.csv',index=False)
print pd.read_csv('./birdsIwant3_1.csv', low_memory=False)
query_count 是每次回圈查询的次数
loop_count 是计算总共需要跑几次循环
我跑了两个循环,print只截取有lat lng的
count.317 birdName.317 lat lng
0 NaN NaN 24.373316 121.310400
1 NaN NaN 24.205938 121.010132
2 NaN NaN 24.373316 121.310400
3 NaN NaN 24.774906 120.970782
是有存进去的
因为档案很大,每次写回去都有点久
如果内存充足或者api不会被google挡掉的话,可以考虑看看全部查完再写回去
或者试试看每个循环拆成一个档案最后合并起来
不知道有没有解决你的问题,有问题在一起讨论~
作者: allen511081 (蓝)   2015-04-12 14:14:00
可以考虑每个循环拆成一个档案,但这后续合并会不会有问题?现在剩下只要超过300笔就会没办法跑的问题
楼主: localhostphp (A动动)   2015-04-12 15:15:00
合并会有什么问题吗?超过300笔个人认为是google的问题,如果没经过申请或者购买,短时间要大量资料会被google认为是攻击的行为,所以会被挡住http://ppt.cc/03a9 如果不是google问题,可以贴上完整错误讯息吗?http://ppt.cc/rJZS 10060我猜测应该是google问题了
作者: allen511081 (蓝)   2015-04-13 09:06:00
[error:10060]应该是google的问题,但是我的for loop在google一天2500笔的限制里,只要超过300笔,也是会出现相同错误,"连线尝试失败,因为连线对象有一段时间并未正确回应,或是连线建立失败,因为连线的主机无法回应"
楼主: localhostphp (A动动)   2015-04-14 11:27:00
这我比较不确定了,google可能限制短时间内不能连查
作者: allen511081 (蓝)   2015-04-14 12:05:00
应该也是这样,想请问一下,现在我想将原始资料切成抱歉,上面有点发问错1.想将原始资料全部分成2500笔为一个档案2.因为不能短时间内针对2500笔资料取得经纬度,想要加入time的语法进去,做sleep的动作请教你,上面两个问题有办法可以在同支程式码解决吗?
楼主: localhostphp (A动动)   2015-04-16 00:12:00
切档案就把query count 改成2500把查询拿掉就好了,建议查询的资料如果有重复的也可以先滤出来再查

Links booklink

Contact Us: admin [ a t ] ucptt.com