我有一个 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) 我想更改 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) 目标:使用 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
我正在使用 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 年前但每天的相同数据?
我有一个带有用户登录系统的烧瓶应用程序。我现在注意到一些与用于注册和登录网站的电子邮件地址区分大小写相关的问题。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) 如何使用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)
我坚持这样做,非常感谢您的帮助。-谢谢
我正在尝试使用该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) 目标:使用该结构输入姓名列表并输出相应电子邮件地址列表
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)
有一个更好的方法吗?
我有一些数据,我从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) 我正在学习一个教程,并坚持解析 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 构造函数没有正确调用!