常用函数与技巧

for loop variables

1
2
3
g = globals()
for i in range(10):
g['df_{}'.format(i)] = i

列表计数

1
2
from collections import Counter
counts = Counter(str)

df去除常数列

1
2
indices = df.apply(pd.Series.nunique)
df= df[indices[indices>1].index]

以下方法更高效

1
df = df.loc[:, (df != df.ix[0]).any()]

list 累减累加

1
np.diff(l)

convert string representation of list to list

1
2
3
4
5
>>> import ast
>>> x = u'[ "A","B","C" , " D"]'
>>> x = ast.literal_eval(x)
>>> x
['A', 'B', 'C', ' D']

call a function from string name

有时候,我们需要调用一个方法,但是这个方法名字却是用字符串形式拿到的。比如开头提到的for loop variables情况。

首先,可以使用eval方法:

1
eval('int')(6.4)

但是据说这种方法存在危险,见Eval really is dangerous,还未细看,[TBC]。

其次,就是字典和getattr方法,还未细看[TBC]。

在函数内部获取函数名

1
2
3
4
5
6
import inspect
def test():
print(inspect.stack()[0][3])
return

test()