我有一个包含时间戳的DF:
0 2005-08-31 16:39:40
1 2005-12-28 16:00:34
2 2005-10-21 17:52:10
3 2014-01-28 12:23:15
4 2014-01-28 12:23:15
5 2011-02-04 18:32:34
6 2011-02-04 18:32:34
7 2011-02-04 18:32:34
Run Code Online (Sandbox Code Playgroud)
我想从每个时间戳中提取年份,在DF中创建如下所示的附加列:
0 2005-08-31 16:39:40 2005
1 2005-12-28 16:00:34 2005
2 2005-10-21 17:52:10 2005
3 2014-01-28 12:23:15 2014
4 2014-01-28 12:23:15 2014
5 2011-02-04 18:32:34 2011
6 2011-02-04 18:32:34 2011
7 2011-02-04 18:32:34 2011
Run Code Online (Sandbox Code Playgroud)
显然,我可以查看所有DF条目,删除日期的前4个字符.哪个很慢.我想知道是否有一种快速的python方式来做到这一点.我看到可以通过DF = pd.to_datetime(DF,'%Y-%m-%d%H:%M:%S')将列转换为日期时间格式,但是当我尝试然后应用datetime时. datetime.year(DF)它不起作用.我还需要将时间戳解析为几个月和几年的组合等等......请帮助.谢谢.
我想找到一个有绑定值的向量的有效排列.
例如,如果perm_vector = [0,0,1,2]我想获得输出的所有组合[0,0,1,2], [0,0,2,1], [0,1,2,0]等等,但我不想获得[0,0,1,2]两次,这是标准itertools.permutations(perm_vector)给出的.
我试过以下但是当它perm_vector grows在len 时它真的很慢:
vectors_list = []
for it in itertools.permutations(perm_vector):
vectors_list.append(list(it))
df_vectors_list = pd.DataFrame( vectors_list)
df_gb = df_vectors_list.groupby(list(df_vectors_list.columns))
vectors_list = pd.DataFrame(df_gb.groups.keys()).T
Run Code Online (Sandbox Code Playgroud)
实际上,问题是更加普遍的"加速"性质.主要时间用于创建长向量的排列 - 即使没有两面性,创建12个唯一值的向量的排列也需要"无穷大".是否有可能迭代地调用itertools而不访问整个排列数据但是处理它的串?
我有一个问题:给定均值和方差,我想使用正态分布作为概率基础来计算样本的概率。数字是:
mean = -0.546369
var = 0.006443
curr_sample = -0.466102
prob = 1/(np.sqrt(2*np.pi*var))*np.exp( -( ((curr_sample - mean)**2)/(2*var) ) )
Run Code Online (Sandbox Code Playgroud)
我得到的概率大于 1!我得到概率 = 3.014558...
是什么原因造成的?方差太小会导致事情变得混乱吗?这是公式中完全合法的输入,并且应该给出不大于 1 的小值!有什么建议么?
我有以下问题:我有一个20K离散分布矩阵(直方图),我需要计算这些对之间的KL分歧(KLD).这样做的简单方法是使用两个for循环并通过标准KLD计算在每两个分布之间计算KLD.这需要时间.很多的时间.我想知道有一种基于矩阵/数组的计算方法.当然,我不是第一个遇到这个问题的人.不幸的是我是python的新手.任何帮助将不胜感激.谢谢!一个.
python ×4
pandas ×2
performance ×2
statistics ×2
algorithm ×1
dataframe ×1
datetime ×1
histogram ×1
parsing ×1
probability ×1