小编Mer*_*oug的帖子

从字符串中解析始发城市/目的地城市

我有一个 Pandas 数据框,其中一列是一堆带有某些旅行细节的字符串。我的目标是解析每个字符串以提取出发城市和目的地城市(我希望最终有两个名为“起源”和“目的地”的新列)。

数据:

df_col = [
    'new york to venice, italy for usd271',
    'return flights from brussels to bangkok with etihad from €407',
    'from los angeles to guadalajara, mexico for usd191',
    'fly to australia new zealand from paris from €422 return including 2 checked bags'
]
Run Code Online (Sandbox Code Playgroud)

这应该导致:

Origin: New York, USA; Destination: Venice, Italy
Origin: Brussels, BEL; Destination: Bangkok, Thailand
Origin: Los Angeles, USA; Destination: Guadalajara, Mexico
Origin: Paris, France; Destination: Australia / New Zealand (this is a complicated …
Run Code Online (Sandbox Code Playgroud)

python regex nlp nltk pandas

25
推荐指数
1
解决办法
7998
查看次数

Pandas 在数据检索后更改列的顺序

我想更改 pd 数据框的列名称,但我发现检索数据后列的顺序会发生变化。以下代码指定部门 ETF 符号并从雅虎财经获取数据。

问题是,例如,一旦我运行代码,“XLY”就不再是数据帧中的第一个系列,因此我不能像通常那样运行 sec_perf.columns = ['Name1', 'Name2', etc]因为它不会正确命名列。我在这里搞砸了什么?

import pandas as pd
import pandas_datareader.data as web
import datetime as datetime

end = datetime.date.today()
secs = ['XLY', 'XLP', 'XLE', 
       'XLF', 'XLV', 'XLI', 
       'XLB', 'XLRE', 'XLK', 'XLU']

sec_perf = web.DataReader(secs, 'yahoo', 
           start = datetime.datetime(2016,12,31), 
           end = end)['Adj Close']
Run Code Online (Sandbox Code Playgroud)

python renaming dataframe pandas

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

在 Python 中使用 Selenium 单击按钮

目标:使用 Selenium 和 Python 在 LinkedIn 的搜索栏上搜索公司名称,然后单击导航中的“公司”按钮以获取有关与关键字相似的公司(而不是该公司的个人)的信息。请参阅下面的示例。“CalSTRS”是我在搜索栏中搜索的公司。然后我想点击“公司”导航按钮。

领英列表导航

我的辅助函数:我定义了以下辅助函数(包括此处的可重复性)。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from random import randint
from selenium.webdriver.common.action_chains import ActionChains
browser = webdriver.Chrome()

def li_bot_login(usrnm, pwrd):
    ##-----Log into linkedin and get to your feed-----
    browser.get('https://www.linkedin.com')

    ##-----Find the Search Bar-----
    u = browser.find_element_by_name('session_key')
    ##-----Enter Username and Password, Enter-----
    u.send_keys(usrnm)
    p = browser.find_element_by_name('session_password')
    p.send_keys(pwrd + Keys.ENTER)

def li_bot_search(search_term):
    #------Search for term in linkedin search box and land you at the search results page------
    search_box …
Run Code Online (Sandbox Code Playgroud)

selenium python-3.x selenium-chromedriver selenium-webdriver

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

pytrends(谷歌趋势)每日频率

我正在使用 pytrends python 包来提高搜索词的流行度。看起来默认频率是每周,但我需要每日数据。有没有一个参数可以调整?我似乎找不到任何东西。这是一些代码可以让你到达同一个地方......

import pytrends
import matplotlib.pyplot as plt
%matplotlib inline
from pytrends.request import TrendReq
pytrends = TrendReq(hl='en-US', tz=360)

pytrends.build_payload(["sp500", "dogs"], cat=0, timeframe='today 5-y', geo='', gprop='')

df = pytrends.interest_over_time()
df.tail()
Run Code Online (Sandbox Code Playgroud)

如您所见,返回的数据帧每周进行一次采样。我怎样才能获得 5 年前但每天的相同数据?

python pandas google-trends

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

Flask-wtform 大小写敏感问题

我有一个带有用户登录系统的烧瓶应用程序。我现在注意到一些与用于注册和登录网站的电子邮件地址区分大小写相关的问题。TL;DR 问题:如何使用 Flask 表单的小写字母来评估用户是否存在于我的数据库中?

例子

假设用户 John Smith 在该网站上注册了一个帐户。他使用 John.Smith@gmail.com 进行注册,然后使用 John.smith@gmail.com 进行登录。截至目前,该网站将把他们视为两个不同的用户。我希望这被视为同一用户。

在Python(我的强项)中,我只需获取str(form.email.data).lower()注册表单,然后将其写入数据库中的用户表。然后当有人尝试登录时我会做同样的事情。换句话说,我总是会考虑使用小写字母进行注册和登录。

但我很难在 Jinja 中实现这一点,尽管它与 Python 相似。

register.html 的电子邮件部分:

                <div class="form-group">
                    {{ form.email.label(class="form-control-label") }}
                    {% if form.email.errors %}
                        {{ form.email(class="form-control form-control-lg is-invalid") }}
                        <div class="invalid-feedback">
                            {% for error in form.email.errors %}
                                <span>{{ error }}</span>
                            {% endfor %}
                        </div>
                    {% else %}
                        {{ form.email(class="form-control form-control-lg") }}
                    {% endif %}
                </div>
Run Code Online (Sandbox Code Playgroud)

routes.py中的注册代码:

@app.route("/register", methods=['GET', 'POST'])
def register():
    if current_user.is_authenticated:
        return redirect(url_for('home'))

    form = RegistrationForm()

    admins = ['admin@admin.com', …
Run Code Online (Sandbox Code Playgroud)

flask flask-sqlalchemy flask-wtforms

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

熊猫to_sql()更新数据库中的唯一值?

如何使用df.to_sql(if_exists = 'append')来在数据框和数据库之间仅附加唯一值。换句话说,我想评估DF和DB之间的重复项,并在写入数据库之前删除这些重复项。

是否有此参数?

据我所知,参数if_exists = 'append'if_exists = 'replace'对整个表-而不是唯一条目。

I am using: 
sqlalchemy

pandas dataframe with the following datatypes: 
    index: datetime.datetime <-- Primary Key
    float
    float
    float
    float
    integer
    string <---  Primary Key
    string<----  Primary Key
Run Code Online (Sandbox Code Playgroud)

我坚持这样做,非常感谢您的帮助。-谢谢

python sql pandas pandas-to-sql

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

无法完全安装和导入 Modin 包

我正在尝试使用该modin包来加速我的 Pandas 数据帧计算。简而言之,安装并不像pip install modin

当简单地运行时,pip install modin一切似乎都很顺利(pip 升级警告除外)。到目前为止一切都很好...

WARNING: You are using pip version 19.3; however, version 19.3.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

(base) C:\Users\Merv Merzoug>pip install modin
Requirement already satisfied: modin in c:\users\merv merzoug\anaconda3\lib\site-packages (0.6.2)
Requirement already satisfied: pandas==0.25.1 in c:\users\merv merzoug\anaconda3\lib\site-packages (from modin) (0.25.1)
Requirement already satisfied: pytz>=2017.2 in c:\users\merv merzoug\anaconda3\lib\site-packages (from pandas==0.25.1->modin) (2019.3)
Requirement already satisfied: python-dateutil>=2.6.1 in c:\users\merv merzoug\anaconda3\lib\site-packages (from …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas modin

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

从名字、姓氏创建电子邮件地址

目标:使用该结构输入姓名列表并输出相应电子邮件地址列表

str(first_name) + '.' + str(last_name) + '@gmail.com'
Run Code Online (Sandbox Code Playgroud)

以下函数创建一个随机生成的名称列表...

import names

def fill_names(gender = 'female', n = n):
    counter = 0
    name_container = []
    while counter < n:
        name = names.get_full_name(gender = gender)
        name_container.append(name)
        counter += 1
    return name_container
Run Code Online (Sandbox Code Playgroud)

现在我有了名字,我会把它们和一堆其他的数据系列放在一个数据框中,我将在这里省略......

masterDF = pd.DataFrame(columns=['author', 'email')
masterDf.author = fill_names(n = n)
Run Code Online (Sandbox Code Playgroud)

从这里我有点不确定。我应该使用 .split() 方法在 for 循环中拆分名字/姓氏吗?像(这是更多的伪代码)......

for row in masterDF.author():
    a = masterDF.author.split(' ')
    email = a[0] + '.' + a[1] + '@gmail.com'
    return email
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python string pandas

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

这是什么日期时间格式,我该如何解析它?

我有一些数据,我从API中提取,日期格式如下:'1522454400000'

不知道如何解析它,但这就是我所拥有的(尝试失败)

df = DataFrame(test)
df.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
df.set_index('Date')
df.index = pd.to_datetime(df.index, unit = 'd')
Run Code Online (Sandbox Code Playgroud)

其中变量test是基础数据的列表.这不正确地解析了1970年的数据.

解析的结果:

1970-01-01 00:00:00.000000000
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

**********************编辑************************************

Python版本:3

熊猫版.0.23.0

这是一个可重复性的工作示例.但首先,这是我发现的事实.

日期格式:自1970年1月1日以来的64位Unix时间戳,以毫秒为单位

TIMEZONE:UTC

我的时区:UTC + 4(所需的日期时间指数)

代码:

import bitmex
import pandas as pd
from pandas import DataFrame
import datetime
import ccxt

api_connector = ccxt.bitmex({
    'enableRateLimit': True
})

#get OHLCV Data
testdata = api_connector.fetch_ohlcv('XBTZ18', '1h')

df2 = DataFrame(testdata)
df2.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume']
#df2.set_index('Date')
df2.index = pd.to_datetime(df2.Date, unit='ms') …
Run Code Online (Sandbox Code Playgroud)

python datetime datetime-format pandas ccxt

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

将 requests.get() 输出解析为 pandas 数据帧

我正在学习一个教程,并坚持解析 requests.get() 的输出

我的目标是连接到下面的 API 以提取历史加密货币价格并将它们放入 Pandas 数据框以供进一步分析。

[API:https : //www.cryptocompare.com/api/#-api-data-histoday-]

这就是我所拥有的。

import requests
response = requests.get("https://min-api.cryptocompare.com/data/histodayfsym=ETC&tsym=USD&limit=10&aggregate=3&e=CCCAGG") 



print(response.text)
Run Code Online (Sandbox Code Playgroud)

现在我想输出到一个数据帧...

pd.DataFrame.from_dict(response)
Run Code Online (Sandbox Code Playgroud)

但我明白了... PandasError: DataFrame 构造函数没有正确调用!

python pandas python-requests

0
推荐指数
1
解决办法
4668
查看次数