小编And*_*den的帖子

在pandas数据框中自定义排序

我有python pandas数据帧,其中一列包含月份名称.

如何使用字典进行自定义排序,例如:

custom_dict = {'March':0, 'April':1, 'Dec':3}  
Run Code Online (Sandbox Code Playgroud)

python pandas

63
推荐指数
4
解决办法
5万
查看次数

在python中赋值错误之前引用

在Python中我收到以下错误:

UnboundLocalError: local variable 'total' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

在文件的开头(在出现错误的函数之前),我使用global关键字声明'total'.然后,在程序的主体中,在调用使用'total'的函数之前,我将它指定为0.我已经尝试在各个地方将它设置为0(包括文件的顶部,就在它被声明之后) ),但我不能让它工作.有谁看到我做错了什么?

python

62
推荐指数
2
解决办法
15万
查看次数

我该如何理解dis.dis的输出?

我想了解如何使用dis(Python字节码的解析器).具体来说,如何解释dis.dis(或dis.disassemble)的输出?

.

这是一个非常具体的例子(在Python 2.7.3中):

dis.dis("heapq.nsmallest(d,3)")

      0 BUILD_SET             24933
      3 JUMP_IF_TRUE_OR_POP   11889
      6 JUMP_FORWARD          28019 (to 28028)
      9 STORE_GLOBAL          27756 (27756)
     12 LOAD_NAME             29811 (29811)
     15 STORE_SLICE+0  
     16 LOAD_CONST            13100 (13100)
     19 STORE_SLICE+1
Run Code Online (Sandbox Code Playgroud)

我看到JUMP_IF_TRUE_OR_POP等等是字节码指令(虽然有趣的是,BUILD_SET这个列表中没有出现,但我希望它可以工作BUILD_TUPLE).我认为右边的数字是内存分配,左边的数字是转到数字......我注意到它们每次几乎增加3(但不完全).

如果我dis.dis("heapq.nsmallest(d,3)")在函数内部换行:

def f_heapq_nsmallest(d,n):
    return heapq.nsmallest(d,n)

dis.dis("f_heapq(d,3)")

      0 BUILD_TUPLE            26719
      3 LOAD_NAME              28769 (28769)
      6 JUMP_ABSOLUTE          25640
      9 <44>                                      # what is <44> ?  
     10 DELETE_SLICE+1 
     11 STORE_SLICE+1 
Run Code Online (Sandbox Code Playgroud)

python python-2.7

62
推荐指数
2
解决办法
1万
查看次数

如何使用python pandas处理传入的实时数据

使用pandas处理实时传入数据的最佳/ pythonic方法是哪种?

每隔几秒钟我就会收到以下格式的数据点:

{'time' :'2013-01-01 00:00:00', 'stock' : 'BLAH',
 'high' : 4.0, 'low' : 3.0, 'open' : 2.0, 'close' : 1.0}
Run Code Online (Sandbox Code Playgroud)

我想将它附加到现有的DataFrame,然后对其进行一些分析.

问题是,只是使用DataFrame.append追加行可能导致所有复制的性能问题.

我试过的事情:

一些人建议预先分配一个大的DataFrame并在数据进入时更新它:

In [1]: index = pd.DatetimeIndex(start='2013-01-01 00:00:00', freq='S', periods=5)

In [2]: columns = ['high', 'low', 'open', 'close']

In [3]: df = pd.DataFrame(index=t, columns=columns)

In [4]: df
Out[4]: 
                    high  low open close
2013-01-01 00:00:00  NaN  NaN  NaN   NaN
2013-01-01 00:00:01  NaN  NaN  NaN   NaN
2013-01-01 00:00:02  NaN  NaN  NaN   NaN
2013-01-01 00:00:03  NaN  NaN  NaN   NaN
2013-01-01 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

是否可以与python pandas进行模糊匹配合并?

我有两个DataFrames,我想根据列合并.然而,由于交替拼写,不同数量的空格,不存在/存在变音符号,我希望能够合并,只要它们彼此相似即可.

任何相似性算法都可以(soundex,Levenshtein,difflib).

假设一个DataFrame具有以下数据:

df1 = DataFrame([[1],[2],[3],[4],[5]], index=['one','two','three','four','five'], columns=['number'])

       number
one         1
two         2
three       3
four        4
five        5

df2 = DataFrame([['a'],['b'],['c'],['d'],['e']], index=['one','too','three','fours','five'], columns=['letter'])

      letter
one        a
too        b
three      c
fours      d
five       e
Run Code Online (Sandbox Code Playgroud)

然后我想得到生成的DataFrame

       number letter
one         1      a
two         2      b
three       3      c
four        4      d
five        5      e
Run Code Online (Sandbox Code Playgroud)

python pandas

54
推荐指数
8
解决办法
4万
查看次数

为什么startwith比切片慢

为什么执行startwith比切片慢?

In [1]: x = 'foobar'

In [2]: y = 'foo'

In [3]: %timeit x.startswith(y)
1000000 loops, best of 3: 321 ns per loop

In [4]: %timeit x[:3] == y
10000000 loops, best of 3: 164 ns per loop
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,即使包括计算长度,切片仍然显得更快:

In [5]: %timeit x[:len(y)] == y
1000000 loops, best of 3: 251 ns per loop
Run Code Online (Sandbox Code Playgroud)

注意:此行为的第一部分在Python for Data Analysis(第3章)中有说明,但没有提供解释.

.

如果有用:这是C代码startswith ; 这是输出dis.dis:

In [6]: import dis

In [7]: dis_it = lambda …
Run Code Online (Sandbox Code Playgroud)

python startswith

47
推荐指数
4
解决办法
5407
查看次数

正则表达式中的递归模式

这与正则表达式非常相关,以匹配外部括号,但是,我特别想知道如何或是否可以执行此正则表达式的递归模式我还没有找到使用这个策略的python示例,所以认为这应该是一个有用的问题!

我已经看到 了一些 索赔 递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重支持递归模式,你需要使用正则表达式).

一种说法是语法在b(?:m|(?R))*e哪里:

b是什么开始构造,m是什么可以发生在构造的中间,并且e是在构造的末尾可以发生的


我想在以下内容中提取外部大括号的匹配项:

"{1, {2, 3}} {4, 5}"
["1, {2, 3}", "4, 5"]  # desired
Run Code Online (Sandbox Code Playgroud)

请注意,对于括号,这很容易做到:

re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")
['2, 3', '4, 5']
Run Code Online (Sandbox Code Playgroud)

(在我的例子中,我使用的是finditer(在匹配对象上),请看这里.)

所以我曾希望以下或某些变体可行:

regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*)|(?R)*})", …
Run Code Online (Sandbox Code Playgroud)

python regex recursive-regex

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

计算字节数组的SHA-1

我正在寻找一种方法来获取带有Java字节数组的SHA-1校验和作为消息.

我应该使用第三方工具还是JVM中内置的东西可以提供帮助?

java sha1

46
推荐指数
3
解决办法
5万
查看次数

从pandas DataFrame导出LaTeX表

是否有一种简单的方法可以将数据框(甚至是其中的一部分)导出到LaTeX?

我在谷歌搜索,只能找到使用asciitables的解决方案.

python latex dataframe pandas

43
推荐指数
3
解决办法
3万
查看次数

从Python Pandas中的另外两个系列创建元素最小系列

我无法找到一种方法来在pandas中对两个Series对象进行有效的元素最小化.例如,我可以轻松添加两个系列:

In [1]:
import pandas as pd
s1 = pd.Series(data=[1,1,1], index=[1,2,3])
s2 = pd.Series(data=[1,2,2,1], index=[1,2,3,4])
s1.add(s2)    
Out[1]:
1     2
2     3
3     3
4   NaN
dtype: float64
Run Code Online (Sandbox Code Playgroud)

但我找不到一种有效的方法来在两个系列之间进行元素最小化(同时对齐索引和处理NaN值).

没关系.有一个带有combine功能的逃生舱,所以你可以放入任何元素功能:

In [2]:
s1 = pd.Series(data=[1,1,1], index=[1,2,3])
s2 = pd.Series(data=[1,2,2,1], index=[1,2,3,4])
s1.combine(s2, min, 0)
Out[2]:
1    1
2    1
3    1
4    0
dtype: int64
Run Code Online (Sandbox Code Playgroud)

python pandas

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