我的问题很简单.我有一个try/except
代码.在尝试中我有一些http请求尝试,除了我有几种方法来处理我得到的异常.
现在我想在我的代码中添加一个时间参数.这意味着尝试只会持续'n'秒.否则接受它除外.
在自由语言中,它将显示为:
try for n seconds:
doSomthing()
except (after n seconds):
handleException()
Run Code Online (Sandbox Code Playgroud)
这是中码.不是功能.我必须抓住超时并处理它.我不能只是继续代码.
while (recoveryTimes > 0):
try (for 10 seconds):
urllib2.urlopen(req)
response = urllib2.urlopen(req)
the_page = response.read()
recoveryTimes = 0
except (urllib2.URLError, httplib.BadStatusLine) as e:
print str(e.__unicode__())
print sys.exc_info()[0]
recoveryTimes -= 1
if (recoveryTimes > 0):
print "Retrying request. Requests left %s" %recoveryTimes
continue
else:
print "Giving up request, changing proxy."
setUrllib2Proxy()
break
except (timedout, 10 seconds has passed)
setUrllib2Proxy()
break
Run Code Online (Sandbox Code Playgroud)
我需要的解决方案是try (for 10 seconds) …
让我们说我构建了一个xgboost模型:
bst = xgb.train(param0, dtrain1, num_round, evals=[(dtrain, "training")])
Run Code Online (Sandbox Code Playgroud)
哪里:
然后,我将模型保存到磁盘:
bst.save_model("xgbmodel")
Run Code Online (Sandbox Code Playgroud)
稍后,我想重新加载我保存的模型并继续使用dtrain2 进行训练
有谁知道怎么做?
假设我有以下DataFrame:
import pandas as pd
df = pd.DataFrame({'events': [ [{'event_text': 'hello1'}, {'event_text': 'hello2'}],
[{'event_text': 'whats up?'}],
[{'event_text': 'all good'}, {'event_text': 'bye'}] ]})
print(df)
events
0 [{'event_text': 'hello1'}, {'event_text': 'hel...
1 [{'event_text': 'whats up?'}]
2 [{'event_text': 'all good'}, {'event_text': 'b...
Run Code Online (Sandbox Code Playgroud)
我试图将所有文本提取到一个列中,如下所示:
0 hello1
1 hello2
2 whats up?
3 all good
4 bye
Run Code Online (Sandbox Code Playgroud)
我认为解决方案涉及json_normalize.我尝试过以下方法:
from pandas.io.json import json_normalize
df['events'].apply(json_normalize)
Run Code Online (Sandbox Code Playgroud)
但它产生了以下结果:
0 event_text
0 hello1
1 hello2
1 event_text
0 whats up?
2 event_text
0 all good
1 bye
Run Code Online (Sandbox Code Playgroud)
任何Pythonic方式来处理这个?
假设我有一个类,并且想从磁盘并行读取几个文件,并对类参数进行参数化。什么是最正确的方法(以及如何)?
我考虑过线程,因为它只是 I/O 操作。
非并行实现示例(1-Threading):
import pandas as pd
class DataManager(object):
def __init__(self):
self.a = None
self.b = None
self.c = None
self.d = None
self.e = None
self.f = None
def load_data(self):
self.a = pd.read_csv('a.csv')
self.b = pd.read_csv('b.csv')
self.c = pd.read_csv('c.csv')
self.d = pd.read_csv('d.csv')
self.e = pd.read_csv('e.csv')
self.f = pd.read_csv('f.csv')
if __name__ == '__main__':
dm = DataManager()
dm.load_data()
# Main thread is waiting for load_data to finish.
print("finished loading data")
Run Code Online (Sandbox Code Playgroud) 我有一个Pandas DataFrame()
并且在其中,一些列Pythons' lists
包含strings
.我想将这些列转换为"二值化"字符串并计算其外观的假人.
作为一个简单的例子,我们可以看看以下内容
import pandas
df = pd.DataFrame({"Hey":[['t1', 't2', 't1', 't3', 't1', 't3'], ['t2', 't2', 't1']]})
df
Out[54]:
Hey
0 [t1, t2, t1, t3, t1, t3]
1 [t2, t2, t1]
Run Code Online (Sandbox Code Playgroud)
我设法做了以下事情:
from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
pd.DataFrame(mlb.fit_transform(df['Hey']), columns=list(map(lambda x: 'Hey_' + x, mlb.classes_)))
Out[55]:
Hey_t1 Hey_t2 Hey_t3
0 1 1 1
1 1 1 0
Run Code Online (Sandbox Code Playgroud)
这不包括他们的外表,但只有1次出现,0次缺席.我想要以下输出:
Hey_t1 Hey_t2 Hey_t3
0 3 1 2
1 1 2 0
Run Code Online (Sandbox Code Playgroud)
这取决于他们的外表.
我想计算所选特定列的值大于 0 行的列数,例如
星期一、星期二、星期三、星期四、星期五、星期六、星期日并将其保存在单独的列中
例如, in 的行数id_recipient 0
是 2: (monday,saturday)
, forid_recipient 1
也是 2:(monday, tuesday)
等等。