小编cs9*_*s95的帖子

在pandas中生成给定范围内的随机日期

这是一个自我回答的帖子.常见问题是在给定的开始日期和结束日期之间随机生成日期.

有两种情况需要考虑:

  1. 具有时间成分的随机日期,和
  2. 没有时间的随机日期

例如,给定一些开始日期2015-01-01和结束日期2018-01-01,如何使用pandas在此范围之间采样N个随机日期?

python random datetime pandas

33
推荐指数
5
解决办法
6238
查看次数

Pandas set_index不设置索引

假设我创建了一个包含两列b(一个DateTime)和c一个整数的pandas DataFrame .现在我想从第一列(b)中的值创建一个DatetimeIndex :

import pandas as pd
import datetime as dt

a=[1371215423523845, 1371215500149460, 1371215500273673, 1371215500296504, 1371215515568529, 1371215531603530, 1371215576463339, 1371215579939113, 1371215731215054, 1371215756231343, 1371215756417484, 1371215756519690, 1371215756551645, 1371215756578979, 1371215770164647, 1371215820891387, 1371215821305584, 1371215824925723, 1371215878061146, 1371215878173401, 1371215890324572, 1371215898024253, 1371215926634930, 1371215933513122, 1371216018210826, 1371216080844727, 1371216080930036, 1371216098471787, 1371216111858392, 1371216326271516, 1371216326357836, 1371216445401635, 1371216445401635, 1371216481057049, 1371216496791894, 1371216514691786, 1371216540337354, 1371216592180666, 1371216592339578, 1371216605823474, 1371216610332627, 1371216623042903, 1371216624749566, 1371216630631179, 1371216654267672, 1371216714011662, 1371216783761738, 1371216783858402, 1371216783858402, 1371216783899118, 1371216976339169, 1371216976589850, 1371217028278777, 1371217028560770, 1371217170996479, 1371217176184425, 1371217176318245, 1371217190349372, 1371217190394753, 1371217272797618, 1371217340235667, 1371217340358197, …
Run Code Online (Sandbox Code Playgroud)

python pandas

32
推荐指数
1
解决办法
6万
查看次数

C ++中的有效整数下限函数

我想定义一个有效的整数下限函数,即从float或double转换为向负无穷大执行截断。

我们可以假设这些值使得没有整数溢出发生。到目前为止,我有一些选择

众所周知,将数据类型转换为int很慢。如果测试也是如此。我尚未设置发言权功能的时间,但是看到帖子声称它也很慢。

您能在速度,准确性或允许范围方面考虑更好的替代方法吗?它不需要是便携式的。目标是最新的x86 / x64体系结构。

c++ performance x86-64 processing-efficiency floor

32
推荐指数
2
解决办法
3847
查看次数

与熊猫的高性能笛卡儿产品(CROSS JOIN)

这篇文章的内容最初是作为Pandas Merging 101的一部分,但由于完全公开 这个主题所需的内容的性质和大小,它已被转移到自己的QnA.

给出两个简单的DataFrame;

left = pd.DataFrame({'col1' : ['A', 'B', 'C'], 'col2' : [1, 2, 3]})
right = pd.DataFrame({'col1' : ['X', 'Y', 'Z'], 'col2' : [20, 30, 50]})

left

  col1  col2
0    A     1
1    B     2
2    C     3

right

  col1  col2
0    X    20
1    Y    30
2    Z    50
Run Code Online (Sandbox Code Playgroud)

可以计算这些帧的叉积,看起来像:

A       1      X      20
A       1      Y      30
A       1      Z      50
B       2      X      20
B       2      Y      30
B       2      Z      50 …
Run Code Online (Sandbox Code Playgroud)

python merge numpy dataframe pandas

31
推荐指数
3
解决办法
6191
查看次数

print()vs sys.stdout.write():哪个和为什么?

我有一个用sys.stdout.write()和创建输出的脚本sys.stderr.write().最近我发布了一些关于脚本其他方面的问题,我注意到发布答案的人似乎更喜欢print('some text', file=sys.stdout).我对输出的主要关注只是它可以被shell传送到文件或作为另一个程序的输入.有人可以解释(或指导我现有的解释)两者之间的差异,print()以及sys.stdout.write每个应该使用的情况和这些惯例的合理性吗?

python python-3.x

30
推荐指数
1
解决办法
5万
查看次数

将DataFrameGroupBy对象转换为DataFrame pandas

我有一个数据帧并在FIPS中做了一个groupby并总结了那些运行良好的组.

kl = ks.groupby('FIPS')

kl.aggregate(np.sum)
Run Code Online (Sandbox Code Playgroud)

我只想要一个普通的Dataframe,但我有一个pandas.core.groupby.DataFrameGroupBy对象.

python pandas

30
推荐指数
2
解决办法
4万
查看次数

pandas将数据框与NaN(或"未知")合并为缺失值

我有2个数据帧,其中一个数据帧具有另一个(但不是全部)行的补充信息.

names = df({'names':['bob','frank','james','tim','ricardo','mike','mark','joan','joe'],
            'position':['dev','dev','dev','sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank'],
           'classification':['thief','thief','good','thief']})
Run Code Online (Sandbox Code Playgroud)

我想从info上面的数据框中获取分类列,并将其添加到names上面的数据框中.但是,当我这样做时combined = pd.merge(names, info),结果数据帧只有4行长.所有没有补充信息的行都将被删除.

理想情况下,我会将缺失列中的值设置为unknown.导致数据框中有些人是有效的,有些是好的,其余的是未知的.

编辑:我收到的第一个答案之一建议使用合并outter似乎做了一些奇怪的事情.这是一个代码示例:

names = df({'names':['bob','frank','bob','bob','bob''james','tim','ricardo','mike','mark','joan','joe'],
            'position':['dev','dev','dev','dev','dev','dev''sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank','joe','bill'],
           'classification':['thief','thief','good','thief','good','thief']})
what = pd.merge(names, info, how="outer")
what.fillna("unknown")
Run Code Online (Sandbox Code Playgroud)

奇怪的是,在输出中我会得到一行,其结果名称是"bobjames",另一行的位置是"devsys".最后,即使bill没有出现在名称数据框中,它也会显示在结果数据框中.所以我真的需要一种方法来说明在这个其他数据框中查找一个值,如果你在这些列上发现了什么.

python dataframe pandas

30
推荐指数
2
解决办法
5万
查看次数

为什么1D数组的形状不会将行数显示为1?

我知道numpy数组有一个叫做shape的方法,它返回[No.of rows,No.of columns],shape [0]给你行数,shape [1]给你列数.

a = numpy.array([[1,2,3,4], [2,3,4,5]])
a.shape
>> [2,4]
a.shape[0]
>> 2
a.shape[1]
>> 4
Run Code Online (Sandbox Code Playgroud)

但是,如果我的数组只有一行,则返回[Numberof columns,].并且形状[1]将不在索引中.例如

a = numpy.array([1,2,3,4])
a.shape
>> [4,]
a.shape[0]
>> 4    //this is the number of column
a.shape[1]
>> Error out of index
Run Code Online (Sandbox Code Playgroud)

现在如果数组可能只有一行,如何获取numpy数组的行数?

谢谢

python arrays numpy

30
推荐指数
1
解决办法
8万
查看次数

在python中交错两个或多个列表的最佳方法?

假设我有一个列表:

l=['a','b','c']
Run Code Online (Sandbox Code Playgroud)

及其后缀列表:

l2 = ['a_1', 'b_1', 'c_1']
Run Code Online (Sandbox Code Playgroud)

我希望所需的输出为:

out_l = ['a','a_1','b','b_2','c','c_3']
Run Code Online (Sandbox Code Playgroud)

结果是上面两个列表的交错版本.

我可以编写常规for循环来完成这项工作,但我想知道是否有更多Pythonic方式(例如,使用list comprehension或lambda)来完成它.

我尝试过这样的事情:

list(map(lambda x: x[1]+'_'+str(x[0]+1), enumerate(a)))
# this only returns ['a_1', 'b_2', 'c_3']
Run Code Online (Sandbox Code Playgroud)

此外,对于一般情况需要做出哪些改变,即对于2个或更多列表,其中l2不一定是衍生物l

python performance list-comprehension list

30
推荐指数
3
解决办法
3256
查看次数

有效地访问任意深度的词典

假设我有一个像这样的多级字典

mydict = {
    'first': {
        'second': {
            'third': {
                'fourth': 'the end'
             }
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样访问它

test = get_entry(mydict, 'first.second.third.fourth')
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是什么

def get_entry(dict, keyspec):
    keys = keyspec.split('.')

    result = dict[keys[0]]
    for key in keys[1:]:
       result = dict[key]

    return result
Run Code Online (Sandbox Code Playgroud)

有更有效的方法吗?根据%timeit,函数的运行时间是1.26us,而访问字典的标准方式是这样的

foo = mydict['first']['second']['third']['fourth']
Run Code Online (Sandbox Code Playgroud)

需要541ns.如果可能的话,我正在寻找将其修剪到800ns范围的方法.

谢谢

python recursion dictionary python-2.7

29
推荐指数
4
解决办法
821
查看次数