我正在尝试使用Pandas将两列转换为一列,该列是两个转换列的字典表示.
df = DataFrame({'Metrics' : [[("P", "P"), ("Q","Q")], ("K", "K"), ("Z", "Z")],
'Stage_Name' : ["P", "K", "Z"],
'Block_Name' : ["A", "B", "A"]})
Run Code Online (Sandbox Code Playgroud)
基本上我想合并Metrics并Stage_Name:
进入另一个名为的列merged,例如,第一行将是:
{'P': [('P', 'P'), ('Q', 'Q')]}
Run Code Online (Sandbox Code Playgroud)
我知道如何将一行转换为字典表示,但是,我不知道如何在没有for循环的情况下对所有行执行此操作:
something = df.iloc[[0]].set_index('Stage_Name')['Metrics'].to_dict()
print something
Output: {'P': [('P', 'P'), ('Q', 'Q')]}
Run Code Online (Sandbox Code Playgroud)
后来我想基于聚合Block_Name,所以对于合并列,结果将是两个字典加在一起Block_Name:A.
{'P': [('P', 'P'), ('Q', 'Q')], 'Z' : [('Z', 'Z')] }
Run Code Online (Sandbox Code Playgroud)
对于Stage_Name和Metrics,我只是将它附加到列表中,如下所示:
grouped = df.groupby(df['Block_Name'])
df_2 = grouped.aggregate(lambda x: tuple(x))
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?谢谢!
我正在尝试按多列进行分组,并将它们聚合在一起,以便它们在分组后成为一个列表.
目前,DataFrame看起来像这样:
我试过用这个:
grouped = DataFrame.groupby(['jobname', 'block'], axis=0)
DataFrame= grouped.aggregate(lambda x: list(x))
Run Code Online (Sandbox Code Playgroud)
但是,当我在IPython中应用它时,它给了我这个错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-221-97113b757fa1> in <module>()
----> 1 cassandraFrame_2 = grouped.aggregate(lambda x: list(x))
2 cassandraFrame_2
/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.pyc in aggregate(self, arg, *args, **kwargs)
2867
2868 if self.grouper.nkeys > 1:
-> 2869 return self._python_agg_general(arg, *args, **kwargs)
2870 else:
2871
/usr/local/lib/python2.7/dist-packages/pandas/core/groupby.pyc in _python_agg_general(self, func, *args, **kwargs)
1166 for name, obj in self._iterate_slices():
1167 try:
-> 1168 result, counts = self.grouper.agg_series(obj, f)
1169 output[name] = self._try_cast(result, …Run Code Online (Sandbox Code Playgroud) 有没有办法在 BigQuery 中生成以小时、分钟和秒为重点的顺序时间戳?
在 BigQuery 中,您可以通过以下方式生成连续日期:
select *
FROM UNNEST(GENERATE_DATE_ARRAY('2016-10-18', '2016-10-19', INTERVAL 1 DAY)) as day
Run Code Online (Sandbox Code Playgroud)
这将按日期间隔生成从 2016-10-18 到 2016-10-19 的日期
Row day
1 2016-10-18
2 2016-10-19
Run Code Online (Sandbox Code Playgroud)
但是假设我想要 15 分钟或 5 分钟的间隔,有没有办法做到这一点?
云功能如何计算内存消耗?
它是当前当前正在运行的所有功能的总存储量吗?
比方说:
分配的总内存为512 MB。
3个运行功能,每个功能60MB。
这是否意味着我们总共使用了180MB?还是每个功能都获得了自己的内存消耗?
我得到一个看起来像这样的内存消耗图:
对象不是持久性的,并且我不写入本地文件,所以我想知道某个地方是否存在问题。
每次部署新功能时,内存消耗都会下降,但是随着调用次数的增加,内存消耗会增加,直到看到内存超出限制错误为止。
我正在尝试优化嵌套的for循环,将数组中的元素与数组中的其余元素进行比较.
有两部分,第一部分是例如,一个数组有3个元素,每个元素都是一个字典:
[{"someKey_1":"a"}, {"someKey_1":"b"}, {"somekey_1":"a"}]
第一次迭代(第一个元素与第二个元素比较):
测试两个元素的"someKey"键,因为a!= b,那么我们什么都不做
第2次迭代(第1个元素与第3个元素比较):
测试两个元素的"someKey"键,因为a == a,我们做一些逻辑
代码:
for idx, val in enumerate(set_of_pk_values):
for idx_2, val_2 in enumerate(set_of_pk_values):
if (val['someKey'] == val_2['someKey'] and idx != idx_2):
#Some Logic
Run Code Online (Sandbox Code Playgroud)
第二部分与上一个例子(列表中的3个项目)非常相似,在同一个字典中,我们有一个与一个键相关联的数组(现在有一个字典,在数组的每个元素中都有两个键),让我们说:
[{"someKey_1":[b,f]}{"someKey_2":a},
{"someKey_1":[e,f]}{"someKey_2":b},
{"somekey_1":[h,k]}{"someKey_2":c}]
Run Code Online (Sandbox Code Playgroud)
第一次迭代(第一个元素与第二个元素比较):
使用键遍历数组:someKey_1
b==b (第二个元素是someKey_2),然后做一些逻辑
f!=b (第二个元素是someKey_2),没有逻辑完成
第二次迭代(第一个元素与第三个元素比较):
使用键遍历数组:someKey_1
b==c (第三个元素是someKey_2),然后做一些逻辑
f!=c (第3个元素是someKey_2),没有逻辑完成
代码:
for idx, val in enumerate(set_of_pk_values):
for idx_2, val_2 in enumerate(set_of_pk_values):
for pred in val['someKey_1']:
if(val_2['someKey_2'] == pred):
#Some Logic
Run Code Online (Sandbox Code Playgroud)
目前第一个嵌套循环的运行时间:21秒,第二个嵌套循环约为19秒.与其他过程相比,1-2秒不等,这部分显然是一个瓶颈.
任何人都可以指出我如何优化这段简单但非常耗时的代码的正确方向?
我正在尝试设置用户可以“尝试”密码的次数。目前,我想存储他/她可以在会话中尝试输入密码的次数和“惩罚时间”。
问题是用户关闭浏览器或更改其他IP地址会对会话产生影响吗?
例如,如果用户有5分钟的惩罚时间,这可以通过两个日期时间实例相减> 5来完成,然后让用户再次尝试5次。如果用户同时关闭并重新打开浏览器,“会话”会丢失吗?
在用户登录之前进行检查:
##############SESSION BASED##################
#Initialize tries, to be used later on
tries = "0"
try:
tries = request.session['tries']
except:
pass
#If tries > 5 times
if(int(tries) >= 5):
timeNow = request.session['locked_time']
timeDifferenceSeconds = (datetime.datetime.now() - datetime.datetime.strptime(timeNow, "%Y-%m-%d %H:%M:%S.%f")).total_seconds()
#See if the difference is greater than 15 minutes, otherwise lock
if(timeDifferenceSeconds > 900):
request.session['tries'] = str(0)
logger.info("User:" + str(username) + " is unlocked");
else:
logger.info("User:" + str(username) + " is currently locked");
logger.info("User:" + str(username) + " returning …Run Code Online (Sandbox Code Playgroud) 我是 Keras 的新手,这是我的 nn:
model = Sequential()
model.add(Dense(12, activation="relu", input_dim=12, kernel_initializer="normal"))
model.add(Dense(3, activation="sigmoid", kernel_initializer="normal"))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)
我有 3 个输出:高、中或低。
当我尝试使用该predict函数时,我得到了正确的类:
array(['medium', 'low', 'medium', ..., 'low', 'medium', 'low'], dtype=object)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试predict_proba函数时,我会得到加起来不等于 1 的概率?
array([[ 4.93983855e-04, 2.28181913e-01, 9.70774710e-01],
[ 3.14530940e-03, 9.60477769e-01, 3.79752717e-04],
[ 1.40661141e-03, 5.70683666e-02, 9.96348858e-01],
...,
[ 1.29012510e-01, 7.08254218e-01, 2.44960701e-03],
[ 1.69786233e-02, 4.71719205e-02, 9.90665674e-01],
[ 1.28657368e-04, 9.89430904e-01, 9.04915680e-04]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
第一行是4.93983855e-04 + 2.28181913e-01 + 9.70774710e-01,总和是1.199450606855,大于1。
我认为第一行意味着:第一列(4.93983855e-04)的概率是中等?