小编Lui*_*uez的帖子

匹配电话号码,正则表达式

我用这种格式的电话号码:

 some_text   phone_number some_text
 some_text   (888) 501-7526 some_text
Run Code Online (Sandbox Code Playgroud)

这是搜索电话号码的更加pythonic方式

(\(\d\d\d\) \d\d\d-\d\d\d\d)

(\([0-9]+\) [0-9]+-[0-9]+)
Run Code Online (Sandbox Code Playgroud)

还是有一个更简单的表达来做到这一点?

python regex

3
推荐指数
1
解决办法
926
查看次数

比较四位数年份的日期

我需要以这种格式比较日期:

'03/31/2018' # month/day/year
Run Code Online (Sandbox Code Playgroud)

我试着使用datetime模块:

from datetime import datetime as dt
dt.strptime("03/31/2018", "%m/%d/%y")
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误:

ValueError: unconverted data remains: 18
Run Code Online (Sandbox Code Playgroud)

如果我使用两位数的年份:

dt.strptime("03/31/18", "%m/%d/%y")
Run Code Online (Sandbox Code Playgroud)

它有效,但在这种情况下,我需要使用整个四位数年份进行比较

python date

3
推荐指数
1
解决办法
1809
查看次数

在while循环中处理异常

我正在调用一个函数,如果尚未加载网页,它将引发异常。我想等待2秒钟,然后重试,直到页面加载完毕。

我尝试这样:

while(True):
    try:
        some_funciont()
        break
    except:
        time.sleep(2)
Run Code Online (Sandbox Code Playgroud)

但它在第一次迭代后会逸出。

如果未引发异常,该如何逃生?

python exception while-loop

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

比较名称之间的相似性

我必须对基于名称的某些数据进行交叉验证。

我面临的问题是,根据来源,名称会有细微的变化,例如:

L & L AIR CONDITIONING   vs L & L AIR CONDITIONING Service

BEST ROOFING vs ROOFING INC
Run Code Online (Sandbox Code Playgroud)

我有成千上万的记录,因此手动执行将非常耗时,我想尽可能地使流程自动化。

由于还有其他单词,仅用小写字母是不够的。

有哪些好的算法可以解决这个问题?

也许要计算相关性,使“ INC”或“ Service”等词的权重较低

编辑:

我尝试了difflib库

difflib.SequenceMatcher(None,name_1.lower(),name_2.lower()).ratio()
Run Code Online (Sandbox Code Playgroud)

我得到了不错的结果。

python nlp machine-learning

3
推荐指数
1
解决办法
3027
查看次数

使用groupby pandas对日期进行排序

我有一个pandas DataFrame,其中包含以下格式的日期:yyyy-mm-dd:

id1 = ['2015-09-23', '2014-07-08', '2015-07-30', '2008-09-26',
       '2009-07-13', '2009-09-28', '2014-04-10', '2009-06-03']

id2 = ['2011-04-15', '2015-11-30', '2015-06-15', '2015-12-01',
       '2015-12-23', '2009-01-14', '2009-06-17', '2009-08-07']

id3 = ['2010-01-26', '2010-03-16', '2011-11-23', '2012-01-31',
       '2012-06-08', '2012-10-26', '2013-01-07', '2013-11-12']

df = pd.DataFrame({'dates':id1 + id2 + id3,'id':['id1']*8+['id2']*8+['id3']*8})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

由此,我想得到每个id的第一个和最后一个日期.

我尝试了以下方法:

df.groupby(['id'])['dates'].agg({'sort':sorted})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是我只能看到第一个日期而不是最后一个日期.我希望输出一个只包含两个元素的列表:第一个和最后一个日期.而不是整个列表.

python sorting dataframe pandas

3
推荐指数
1
解决办法
1973
查看次数

threshold_local返回的结果与scikit-image中的threshold_adaptive不同

我正在从文档中复制此示例

import matplotlib.pyplot as plt

from skimage import data
from skimage.filters import threshold_otsu, threshold_adaptive


image = data.page()

global_thresh = threshold_otsu(image)
binary_global = image > global_thresh

block_size = 35
binary_adaptive = threshold_adaptive(image, block_size, offset=10)

fig, axes = plt.subplots(nrows=3, figsize=(7, 8))
ax0, ax1, ax2 = axes
plt.gray()

ax0.imshow(image)
ax0.set_title('Image')

ax1.imshow(binary_global)
ax1.set_title('Global thresholding')

ax2.imshow(binary_adaptive)
ax2.set_title('Adaptive thresholding')

for ax in axes:
    ax.axis('off')

plt.show()
Run Code Online (Sandbox Code Playgroud)

有threshold_adaptive,但是会引发警告:

在此处输入图片说明

“用户警告:的返回值为threshold_local阈值图像,而threshold_adaptive返回的是阈值图像”

但是当我使用threshold_adaptive时,结果是不同的:

在此处输入图片说明

python image-processing threshold scikit-image

3
推荐指数
1
解决办法
1435
查看次数

'module'对象没有属性'Serial'

我正在使用以下代码与arduino通信我的电脑,但我得到标题中提到的错误,模块对象没有属性串行.

#!/usr/bin/python

# Importamos la libreira de PySerial
import serial

# Abrimos el puerto del arduino a 9600
PuertoSerie = serial.Serial('/dev/ttyACM0', 9600)
# Creamos un buble sin fin
while True:
  # leemos hasta que encontarmos el final de linea
  sArduino = PuertoSerie.readline()
  # Mostramos el valor leido y eliminamos el salto de linea del final
  print "Valor Arduino: " + sArduino.rstrip('\n')
Run Code Online (Sandbox Code Playgroud)

古玩的事情是用来工作的代码,但后来我安装了matplotlib和drawow库,我相信这已经引起了问题,但我不知道如何解决它,因为并且需要这些库的任何方式.

另一个问题是我将代码行复制到它工作的终端中,但当然我需要在.py文件中使用循环.

python

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

验证dict中布尔变量的状态

我正在使用一些标志来跟踪以下行为:

is_registered = True
has_paid = False    
has_phone  = True

if (is_registered and has_phone and has_paid):
    do_something
Run Code Online (Sandbox Code Playgroud)

但是如果字段数增加,我更喜欢将它存储在字典中

user_flags = {'is_registered':True,'has_paid':False,'has_phone':True}

if (user_flags['is_registered'] and user_flags['has_paid'] and user_flags['has_phone']):
    do_something
Run Code Online (Sandbox Code Playgroud)

对于少量商品而言,这可能是好的,但如果我说了超过50件商品,它就会变得非常冗长

python dictionary boolean

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

使用 sklearn 进行多项式回归的最简单方法?

我有一些不适合线性回归的数据:

在此处输入图片说明

实际上应该“完全”拟合二次函数:

P = R*I**2 
Run Code Online (Sandbox Code Playgroud)

我在做这个:

model = sklearn.linear_model.LinearRegression()

X = alambres[alambre]['mediciones'][x].reshape(-1, 1)
Y = alambres[alambre]['mediciones'][y].reshape(-1, 1)
model.fit(X,Y)
Run Code Online (Sandbox Code Playgroud)

是否有机会通过执行以下操作来解决它:

model.fit([X,X**2],Y)
Run Code Online (Sandbox Code Playgroud)

python pandas scikit-learn polynomials non-linear-regression

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

快速计算数据帧中所有情况之间的余弦相似度

我正在做一个 NLP 项目,我必须比较来自这个数据帧的许多句子 EG 之间的相似性:

在此处输入图片说明

我尝试的第一件事是将数据帧与自身连接以获得波纹管格式并逐行比较:

在此处输入图片说明

对于大中型/大数据集,我很快就会出现内存不足的问题,例如,对于 10k 行连接,我将获得 100MM 行,而这些行无法放入 ram

我目前的方法是使用以下方式迭代数据帧:

final = pd.DataFrame()

### for each row 
for i in range(len(df_sample)):

    ### select the corresponding vector to compare with 
    v =  df_sample[df_sample.index.isin([i])]["use_vector"].values
    ### compare all cases agains the selected vector
    df_sample.apply(lambda x:  cosine_similarity_numba(x.use_vector,v[0])  ,axis=1)

    ### kept the cases with a similarity over a given th, in this case 0.6
    temp = df_sample[df_sample.apply(lambda x:  cosine_similarity_numba(x.use_vector,v[0])  ,axis=1) > 0.6]  
    ###  filter out the base case 
    temp = temp[~temp.index.isin([i])]
    temp["original_question"] …
Run Code Online (Sandbox Code Playgroud)

python nlp numpy linear-algebra pandas

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